diff --git a/mhd_oms/Dockerfile b/mhd_oms/Dockerfile new file mode 100644 index 000000000..7a606f502 --- /dev/null +++ b/mhd_oms/Dockerfile @@ -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"] diff --git a/mhd_oms/pom.xml b/mhd_oms/pom.xml new file mode 100644 index 000000000..10fd57f01 --- /dev/null +++ b/mhd_oms/pom.xml @@ -0,0 +1,169 @@ + + + 4.0.0 + + com.mhd + mhd + 3.6.0 + + + mhd_oms + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + io.github.openfeign + feign-httpclient + + + org.springframework.cloud + spring-cloud-loadbalancer + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + com.alibaba.csp + sentinel-datasource-nacos + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + org.springframework.boot + spring-boot-starter-amqp + + + + + com.fasterxml.jackson.core + jackson-databind + + + + + com.alibaba.fastjson2 + fastjson2 + + + + com.mhd + mhd-common-core + + + + com.mhd + mhd-common-redis + + + com.dameng + DmJdbcDriver18 + 8.1.1.193 + + + + com.alibaba + druid-spring-boot-starter + 1.2.11 + + + + org.projectlombok + lombok + 1.18.4 + provided + + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + + org.springframework.cloud + spring-cloud-starter-zipkin + 2.2.8.RELEASE + + + + + com.mhd + mhd-common-security + + + + com.baomidou + dynamic-datasource-spring-boot-starter + 3.3.1 + + + + com.mhd + mhd_common_db + 3.6.0 + + + + com.mhd + mhd-common-log + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + 2.1.1.RELEASE + + + + repackage + + + + + + + + + 8 + 8 + UTF-8 + + + + mhd_oms + + + + com.spotify + dockerfile-maven-plugin + + + + + + diff --git a/mhd_oms/src/main/java/com/mhd/oms/OMSApplication.java b/mhd_oms/src/main/java/com/mhd/oms/OMSApplication.java new file mode 100644 index 000000000..deacebdd7 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/OMSApplication.java @@ -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); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/application/service/deliveryInfo/DeliveryInfoApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/application/service/deliveryInfo/DeliveryInfoApplicationService.java new file mode 100644 index 000000000..268aa3206 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/application/service/deliveryInfo/DeliveryInfoApplicationService.java @@ -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 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); + } + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/application/service/goods/GoodsApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/application/service/goods/GoodsApplicationService.java new file mode 100644 index 000000000..d62df3d62 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/application/service/goods/GoodsApplicationService.java @@ -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 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); + } + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/application/service/interceptOrder/InterceptOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/application/service/interceptOrder/InterceptOrderApplicationService.java new file mode 100644 index 000000000..c880644eb --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/application/service/interceptOrder/InterceptOrderApplicationService.java @@ -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 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); + } + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/application/service/logistics/LogisticsApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/application/service/logistics/LogisticsApplicationService.java new file mode 100644 index 000000000..644b8d6c3 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/application/service/logistics/LogisticsApplicationService.java @@ -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 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); + } + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/application/service/orderType/OrderTypeApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/application/service/orderType/OrderTypeApplicationService.java new file mode 100644 index 000000000..bbf5e8846 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/application/service/orderType/OrderTypeApplicationService.java @@ -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 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 listDict() { + return orderTypeDomainService.listDict(); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/application/service/purchaseOrder/PurchaseOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/application/service/purchaseOrder/PurchaseOrderApplicationService.java new file mode 100644 index 000000000..173dd9d74 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/application/service/purchaseOrder/PurchaseOrderApplicationService.java @@ -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 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 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 settlementDictList = JSONUtil.toList(JSONUtil.toJsonStr(settlementDict.get("data")), SysDictDataVo.class); + Map 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 payStateDictList = JSONUtil.toList(JSONUtil.toJsonStr(payStateDict.get("data")), SysDictDataVo.class); + Map 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 transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map 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 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 settlementDictList = JSONUtil.toList(JSONUtil.toJsonStr(settlementDict.get("data")), SysDictDataVo.class); + Map 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 payStateDictList = JSONUtil.toList(JSONUtil.toJsonStr(payStateDict.get("data")), SysDictDataVo.class); + Map 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 transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map 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 purchaseOrderExcelDtoList) { + // TODO:缺少对ID字段的相关处理 + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + if (CollUtil.isEmpty(purchaseOrderExcelDtoList)) { + throw new ServiceException("导入信息为空"); + } + List settlementDOList = new ArrayList<>(); + List deliveryInfoDOList = new ArrayList<>(); + List receiptInfoDOList = new ArrayList<>(); + List logisticsDOList = new ArrayList<>(); + List 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 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>, + * 遍历分组,处理每组对应的采购订单及任务列表 + * 不管拦截成功或失败,都会新增一条记录到拦截表中,拦截成功后会同步修改下游数据表中的状态 + * + * @param idList + */ + @Transactional(rollbackFor = Exception.class) + public void interceptOrder(List idList) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + + // 查询采购订单列表下所有的任务组 <订单m,List>, + Map> 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 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 purchaseOrderPOS = purchaseOrderDomainService.getInfo(ids); + //1、1 采购订单只有在已审核状态下才可以生成供应链订单 + List stateCount = purchaseOrderPOS.stream().filter(e -> e.getOrderState() != 2).collect(Collectors.toList()); + if (!stateCount.isEmpty()) { + throw new ServiceException("已审核状态下才可以生成供应链订单"); + } + //1.2 更新采购订单的状态 + List 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 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 ids) { + + LoginUser loginUser = SecurityUtils.getLoginUser(); + + + //查询所有的采购订单信息 + List purchaseOrderPOS = purchaseOrderDomainService.getInfo(ids); + //判断一下是否生成供应链订单,未生成则不需要取消 + List purchaseCollect = purchaseOrderPOS.stream().filter(purchaseOrderPO -> purchaseOrderPO.getOrderState() < 4) + .collect(Collectors.toList()); + if (!purchaseCollect.isEmpty()) { + throw new ServiceException("供应链订单尚未生成,无需进行取消"); + } + + //根据采购订单查询作业任务 + List taskOrderPOS = taskOrderDomainService.getInfosByOrderId(ids); + //过滤作业任务(如果作业任务包含未下发/已下发/已完成 的,则不允许取消作业任务) + List 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 scmOrderPOS = scmOrderDomainService.getInfosByOrderId(ids); + //修改供应链订单状态,修改未已取消状态 + List 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 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; + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/application/service/receiptInfo/ReceiptInfoApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/application/service/receiptInfo/ReceiptInfoApplicationService.java new file mode 100644 index 000000000..d1b2b318e --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/application/service/receiptInfo/ReceiptInfoApplicationService.java @@ -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 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); + } + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/application/service/salesOrder/SalesOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/application/service/salesOrder/SalesOrderApplicationService.java new file mode 100644 index 000000000..2734adf29 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/application/service/salesOrder/SalesOrderApplicationService.java @@ -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 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 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 settlementDictList = JSONUtil.toList(JSONUtil.toJsonStr(settlementDict.get("data")), SysDictDataVo.class); + Map 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 payStateDictList = JSONUtil.toList(JSONUtil.toJsonStr(payStateDict.get("data")), SysDictDataVo.class); + Map 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 transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map 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 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 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 settlementDictList = JSONUtil.toList(JSONUtil.toJsonStr(settlementDict.get("data")), SysDictDataVo.class); + Map 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 payStateDictList = JSONUtil.toList(JSONUtil.toJsonStr(payStateDict.get("data")), SysDictDataVo.class); + Map 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 transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map 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 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 salesOrderPOS = salesOrderDomainService.getInfos(ids); + if (salesOrderPOS.isEmpty()) { + throw new ServiceException("未查询到匹配的销售订单信息"); + } + //2、销售订单只有在已审核状态下才可以生成供应链订单 + List stateCount = salesOrderPOS.stream().filter(e -> e.getOrderState() != 2).collect(Collectors.toList()); + if (!stateCount.isEmpty()) { + throw new ServiceException("已审核状态下才可以生成供应链订单"); + } + //3、更新销售订单的状态 + List 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 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 ids) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + //查询所有的销售订单信息 + List salesOrderPOS = salesOrderDomainService.getInfos(ids); + //判断一下是否生成供应链订单,未生成则不需要取消 + List salesCollect = salesOrderPOS.stream().filter(salesOrderPO -> salesOrderPO.getOrderState() < 4) + .collect(Collectors.toList()); + if (!salesCollect.isEmpty()) { + throw new ServiceException("供应链订单尚未生成,无需进行取消"); + } + + //根据采购订单查询作业任务 + List taskOrderPOS = taskOrderDomainService.getInfosByOrderId(ids); + //过滤作业任务(如果作业任务包含未下发/已下发/已完成 的,则不允许取消作业任务) + List 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 scmOrderPOS = scmOrderDomainService.getInfosByOrderId(ids); + //修改供应链订单状态,修改未已取消状态 + List 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 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 idList) { + + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + + // 查询销售订单列表下所有的任务组 + Map> 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 salesExcelList) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + if (CollUtil.isEmpty(salesExcelList)) { + throw new ServiceException("导入信息为空"); + } + + List settlementDOList = new ArrayList<>(); + List deliveryInfoDOList = new ArrayList<>(); + List receiptInfoDOList = new ArrayList<>(); + List logisticsDOList = new ArrayList<>(); + List 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); + } + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/application/service/scmOrder/ScmOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/application/service/scmOrder/ScmOrderApplicationService.java new file mode 100644 index 000000000..dfbb6bae5 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/application/service/scmOrder/ScmOrderApplicationService.java @@ -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 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 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 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 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 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 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 idList) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if(ObjectUtils.isNull(loginUser)){ + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + + // 供应链订单对应的所有物料的信息列表 <供应链订单,List<全部物料列表(总物料数量、作业任务中已生成物料数量)>> + Map> scmGoodsMap = scmOrderDomainService.getGoodsAndTaskInfoList(idList); + + // 更新供应链订单状态为全部生成;应生成的作业任务列表数据处理;供应链订单任务数量、有效数量增加生成的作业任务数量 + List taskOrderList = scmOrderDomainService.handlerbatchCreateTaskOrder(scmGoodsMap); + + // 保存作业任务 + taskOrderDomainService.batchInsert(taskOrderList); + + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/application/service/settlement/SettlementApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/application/service/settlement/SettlementApplicationService.java new file mode 100644 index 000000000..df2c858a3 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/application/service/settlement/SettlementApplicationService.java @@ -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 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); + } + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/application/service/taskOrder/TaskOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/application/service/taskOrder/TaskOrderApplicationService.java new file mode 100644 index 000000000..a73457f6b --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/application/service/taskOrder/TaskOrderApplicationService.java @@ -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 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 ids) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ids.isEmpty()) { + throw new ServiceException("传递的ID值缺失或为空"); + } + //根据ids集合查询所有的任务信息包括已合并的任务信息 + List taskOrderPOS = taskOrderDomainService.getInfoByIds(ids); + //只有未下发的任务才可以下发 + List stateCollect = taskOrderPOS.stream().filter(taskOrderPO -> taskOrderPO.getTaskStatus() != 0).collect(Collectors.toList()); + if (!stateCollect.isEmpty()) { + throw new ServiceException("尚未下发的任务方可进行下发操作"); + } + + List 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 noticeMaterialDetailDOS = new ArrayList() {{ + add(noticeMaterialDetailDTO); + }}; + + return noticeOrderDTO; + } + + public Boolean finishTask(List ids) { + //List ids = Convert.toList(Long.class, deliverTaskDTO.getIds()); + List 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 poPreMergeTask(List ids) { + //List 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 poTaskDetailPOs = taskOrderDomainService.getPoTaskDetail(ids); + // TODO 查询任务合并规则表,取用户设置的默认规则合并任务 + // 目前规则写死,先按照同一货主、同一仓库进行任务合并 + Map> groupMap = SetGroupUtil.groupingBy(poTaskDetailPOs, PoTaskDetailPO::getWarehouseId, + PoTaskDetailPO::getShipperId); + List 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 poMergeTaskDTOS) { + + List taskOrderDOS = new ArrayList<>(); + for (int i = 0; i < poMergeTaskDTOS.size(); i++) { + + + List 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 idList) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if(ObjectUtils.isNull(loginUser)){ + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + if(idList.size() == 0){ + throw new ServiceException("供应链订单ID列表不能为空"); + } + + // 取消任务 + List ableCancelledScmIdList = taskOrderDomainService.cancelTaskOrder(idList); + + // 更新供应链订单任务数量、状态 + scmOrderDomainService.updateFromCancelTask(ableCancelledScmIdList); + + } + + /** + * 还原合并任务 + * @param ids + * @return + */ + public Boolean restoreMergeTask(List ids) { + //根据集合查询所有任务信息 + List taskOrderPOS = taskOrderDomainService.getInfos(ids); + //只能未下发且有合并作业任务的,允许还原 + List stateCollect = taskOrderPOS.stream().filter(taskOrderPO -> + taskOrderPO.getTaskStatus() != 0 || taskOrderPO.getMergeState() == 0).collect(Collectors.toList()); + if (!stateCollect.isEmpty()) { + throw new ServiceException("仅允许将处于未下发且已合并状态的任务进行还原"); + } + //处理数据,批量今行数据修改 + List 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); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/constant/OrderConstant.java b/mhd_oms/src/main/java/com/mhd/oms/constant/OrderConstant.java new file mode 100644 index 000000000..631d6090b --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/constant/OrderConstant.java @@ -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; + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/constant/OrderEnum.java b/mhd_oms/src/main/java/com/mhd/oms/constant/OrderEnum.java new file mode 100644 index 000000000..23d3210b0 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/constant/OrderEnum.java @@ -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; + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/OrderInfoPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/OrderInfoPO.java new file mode 100644 index 000000000..56ec07b76 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/OrderInfoPO.java @@ -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; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/entity/DeliveryInfo.java b/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/entity/DeliveryInfo.java new file mode 100644 index 000000000..1aa1c3147 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/entity/DeliveryInfo.java @@ -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; + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/repository/facade/IDeliveryInfoService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/repository/facade/IDeliveryInfoService.java new file mode 100644 index 000000000..feb05319a --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/repository/facade/IDeliveryInfoService.java @@ -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 +{ + /** + * 分页查询发货信息列表 + */ + public List 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 deliveryInfoDOList); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/repository/mapper/DeliveryInfoMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/repository/mapper/DeliveryInfoMapper.java new file mode 100644 index 000000000..7c6905bce --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/repository/mapper/DeliveryInfoMapper.java @@ -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 +{ + /** + * 查询发货信息列表 + */ + public List queryList(DeliveryInfoDO deliveryInfoDO); + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/repository/persistence/DeliveryInfoImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/repository/persistence/DeliveryInfoImpl.java new file mode 100644 index 000000000..342949bd3 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/repository/persistence/DeliveryInfoImpl.java @@ -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 implements IDeliveryInfoService { + @Autowired + private DeliveryInfoMapper deliveryInfoMapper; + + /** + * 查询发货信息列表 + */ + @Override + public List 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 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 deliveryInfoDOList) { + List deliveryInfoList = deliveryInfoDOList.stream().map(deliveryInfoDO -> { + DeliveryInfo deliveryInfo = new DeliveryInfo(); + BeanUtils.copyProperties(deliveryInfoDO, deliveryInfo); + return deliveryInfo; + }).collect(Collectors.toList()); + + return this.saveBatch(deliveryInfoList); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/repository/po/DeliveryInfoPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/repository/po/DeliveryInfoPO.java new file mode 100644 index 000000000..f9ad87e04 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/repository/po/DeliveryInfoPO.java @@ -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; + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/repository/todo/DeliveryInfoDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/repository/todo/DeliveryInfoDO.java new file mode 100644 index 000000000..dc3b198ec --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/repository/todo/DeliveryInfoDO.java @@ -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 organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/service/DeliveryInfoDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/service/DeliveryInfoDomainService.java new file mode 100644 index 000000000..29b88b579 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/deliveryInfo/service/DeliveryInfoDomainService.java @@ -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 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 deliveryInfoDOList) { + return deliveryInfoService.batchInsert(deliveryInfoDOList); + } + + /** + * 导入销售订单 - 为传入的发货列表添加一条发货信息 + * + * @param deliveryInfoDOList - 添加数据的列表 + * @param salesOrderExcelDTO -导入的数据 + * @param salesOrder - 导入数据中的销售订单信息 + */ + public void listAddFromImportSalesOrder(List 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 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); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/goods/entity/Goods.java b/mhd_oms/src/main/java/com/mhd/oms/domain/goods/entity/Goods.java new file mode 100644 index 000000000..28d5b31f8 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/goods/entity/Goods.java @@ -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; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/goods/repository/facade/IGoodsService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/goods/repository/facade/IGoodsService.java new file mode 100644 index 000000000..badc10f26 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/goods/repository/facade/IGoodsService.java @@ -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 +{ + /** + * 分页查询商品信息列表 + */ + public List 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 goodsDOList); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/goods/repository/mapper/GoodsMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/goods/repository/mapper/GoodsMapper.java new file mode 100644 index 000000000..2892264fe --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/goods/repository/mapper/GoodsMapper.java @@ -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 +{ + /** + * 查询商品信息列表 + */ + public List queryList(GoodsDO goodsDO); + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/goods/repository/persistence/GoodsImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/goods/repository/persistence/GoodsImpl.java new file mode 100644 index 000000000..48bf53707 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/goods/repository/persistence/GoodsImpl.java @@ -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 implements IGoodsService { + @Autowired + private GoodsMapper goodsMapper; + + /** + * 查询商品信息列表 + */ + @Override + public List 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 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 lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.eq(Goods::getOrderId, orderId).set(Goods::getDelFlag, 2); + return this.update(null, lambdaUpdateWrapper); + } + + /** + * 批量新增 + * @param goodsDOList + */ + @Override + public Boolean batchInsert(List goodsDOList) { + List goodsList = goodsDOList.stream().map(goodsDO -> { + Goods goods = new Goods(); + BeanUtils.copyProperties(goodsDO, goods); + return goods; + }).collect(Collectors.toList()); + + return this.saveBatch(goodsList); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/goods/repository/po/GoodsPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/goods/repository/po/GoodsPO.java new file mode 100644 index 000000000..2e87d389f --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/goods/repository/po/GoodsPO.java @@ -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; + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/goods/repository/todo/GoodsDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/goods/repository/todo/GoodsDO.java new file mode 100644 index 000000000..d62241577 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/goods/repository/todo/GoodsDO.java @@ -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 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 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 idList){ + this.idList = idList; + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/goods/service/GoodsDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/goods/service/GoodsDomainService.java new file mode 100644 index 000000000..1ae59e568 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/goods/service/GoodsDomainService.java @@ -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 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 goodsDOList) { + return goodsService.batchInsert(goodsDOList); + } + + + /** + * 导入销售订单 - 为传入的销售明细列表添加一条明细 + * + * @param goodsDOList - 添加数据的列表 + * @param salesOrderExcelDTO -导入的数据 + * @param salesOrder - 导入数据中的销售订单信息 + */ + public void listAddFromImportSalesOrder(List 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 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); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/entity/InterceptOrder.java b/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/entity/InterceptOrder.java new file mode 100644 index 000000000..d95e3a4a2 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/entity/InterceptOrder.java @@ -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; + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/repository/facade/IInterceptOrderService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/repository/facade/IInterceptOrderService.java new file mode 100644 index 000000000..3fde8773d --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/repository/facade/IInterceptOrderService.java @@ -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 +{ + /** + * 分页查询拦截订单列表 + */ + public List queryList(InterceptOrderDO interceptOrderDO); + + /** + * 新增拦截订单 + */ + public Boolean insert(InterceptOrderDO interceptOrderDO); + + /** + * 修改拦截订单 + */ + public Boolean update(InterceptOrderDO interceptOrderDO); + + /** + * 批量删除拦截订单 + */ + public Boolean delete(Long[] ids); + + + /** + * 查询拦截订单 + */ + public InterceptOrderPO getInfo(Long id); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/repository/mapper/InterceptOrderMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/repository/mapper/InterceptOrderMapper.java new file mode 100644 index 000000000..aa2629d07 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/repository/mapper/InterceptOrderMapper.java @@ -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 +{ + /** + * 查询拦截订单列表 + */ + public List queryList(InterceptOrderDO interceptOrderDO); + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/repository/persistence/InterceptOrderImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/repository/persistence/InterceptOrderImpl.java new file mode 100644 index 000000000..72d1719fc --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/repository/persistence/InterceptOrderImpl.java @@ -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 implements IInterceptOrderService{ + @Autowired + private InterceptOrderMapper interceptOrderMapper; + + @Resource + private ScmOrderMapper scmOrderMapper; + + /** + * 查询拦截订单列表 + */ + @Override + public List queryList(InterceptOrderDO interceptOrderDO) + { + List 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 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; + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/repository/po/InterceptOrderPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/repository/po/InterceptOrderPO.java new file mode 100644 index 000000000..6bc47ac01 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/repository/po/InterceptOrderPO.java @@ -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; + + + + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/repository/todo/InterceptOrderDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/repository/todo/InterceptOrderDO.java new file mode 100644 index 000000000..999563e1e --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/repository/todo/InterceptOrderDO.java @@ -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 organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/service/InterceptOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/service/InterceptOrderDomainService.java new file mode 100644 index 000000000..33ba8fa43 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/interceptOrder/service/InterceptOrderDomainService.java @@ -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 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 v) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + + // =========================== 获取不可拦截的任务列表 ============================== + // 不可拦截任务列表1:任务状态不可拦截 + List unableInterceptTask1 = v.stream() + .filter(x -> ArrayUtil.contains(OrderConstant.TASK_STATUS_GROUP_UNABLE_INTERCEPT, x.getTaskStatus())) + .collect(Collectors.toList()); + // 不可拦截任务列表2:任务未下发但已合并 + List 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 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 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; + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/entity/Logistics.java b/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/entity/Logistics.java new file mode 100644 index 000000000..f71998576 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/entity/Logistics.java @@ -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; + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/repository/facade/ILogisticsService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/repository/facade/ILogisticsService.java new file mode 100644 index 000000000..9d1ce6aea --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/repository/facade/ILogisticsService.java @@ -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 +{ + /** + * 分页查询物流信息列表 + */ + public List 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 logisticsDOList); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/repository/mapper/LogisticsMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/repository/mapper/LogisticsMapper.java new file mode 100644 index 000000000..b5f6211ab --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/repository/mapper/LogisticsMapper.java @@ -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 +{ + /** + * 查询物流信息列表 + */ + public List queryList(LogisticsDO logisticsDO); + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/repository/persistence/LogisticsImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/repository/persistence/LogisticsImpl.java new file mode 100644 index 000000000..3a891ff76 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/repository/persistence/LogisticsImpl.java @@ -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 implements ILogisticsService { + @Autowired + private LogisticsMapper logisticsMapper; + + /** + * 查询物流信息列表 + */ + @Override + public List 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 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 logisticsDOList) { + List logisticsList = logisticsDOList.stream().map(logisticsDO -> { + Logistics logistics = new Logistics(); + BeanUtils.copyProperties(logisticsDO, logistics); + return logistics; + }).collect(Collectors.toList()); + + return this.saveBatch(logisticsList); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/repository/po/LogisticsPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/repository/po/LogisticsPO.java new file mode 100644 index 000000000..af35909b6 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/repository/po/LogisticsPO.java @@ -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; + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/repository/todo/LogisticsDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/repository/todo/LogisticsDO.java new file mode 100644 index 000000000..65df89581 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/repository/todo/LogisticsDO.java @@ -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 organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/service/LogisticsDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/service/LogisticsDomainService.java new file mode 100644 index 000000000..76233928e --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/logistics/service/LogisticsDomainService.java @@ -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 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 logisticsDOList) { + return logisticsService.batchInsert(logisticsDOList); + } + + /** + * 导入销售订单 - 为传入的物流列表添加一条物流信息 + * + * @param logisticsDOList - 添加数据的列表 + * @param salesOrderExcelDTO -导入的数据 + * @param salesOrder - 导入数据中的销售订单信息 + */ + public void listAddFromImportSalesOrder(List 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 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); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/entity/OrderType.java b/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/entity/OrderType.java new file mode 100644 index 000000000..c6fb5e960 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/entity/OrderType.java @@ -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; + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/facade/IOrderTypeService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/facade/IOrderTypeService.java new file mode 100644 index 000000000..9a5475f49 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/facade/IOrderTypeService.java @@ -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 +{ + /** + * 分页查询订单类型关系列表 + */ + public List queryList(OrderTypeDO orderTypeDO); + + /** + * 新增订单类型关系 + */ + public Boolean insert(OrderTypeDO orderTypeDO); + + /** + * 修改订单类型关系 + */ + public Boolean update(OrderTypeDO orderTypeDO); + + /** + * 批量删除订单类型关系 + */ + public Boolean delete(Long[] ids); + + + /** + * 查询订单类型关系 + */ + public OrderTypePO getInfo(Long id); + + List listDict(); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/mapper/OrderTypeMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/mapper/OrderTypeMapper.java new file mode 100644 index 000000000..8708896ce --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/mapper/OrderTypeMapper.java @@ -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 +{ + /** + * 查询订单类型关系列表 + */ + public List queryList(OrderTypeDO orderTypeDO); + + List listDict(); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/persistence/OrderTypeImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/persistence/OrderTypeImpl.java new file mode 100644 index 000000000..50f647636 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/persistence/OrderTypeImpl.java @@ -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 implements IOrderTypeService{ + @Autowired + private OrderTypeMapper orderTypeMapper; + + /** + * 查询订单类型关系列表 + */ + @Override + public List 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 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() + .eq(OrderType::getId,id).eq(OrderType::getDelFlag,1)); + OrderTypePO orderTypePO = new OrderTypePO(); + if (orderType != null) { + BeanUtils.copyProperties(orderType, orderTypePO); + } + return orderTypePO; + } + + @Override + public List listDict() { + return orderTypeMapper.listDict(); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/po/OrderTypeDictPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/po/OrderTypeDictPO.java new file mode 100644 index 000000000..caa1c85ff --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/po/OrderTypeDictPO.java @@ -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; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/po/OrderTypePO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/po/OrderTypePO.java new file mode 100644 index 000000000..c7b552aa1 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/po/OrderTypePO.java @@ -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; + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/todo/OrderTypeDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/todo/OrderTypeDO.java new file mode 100644 index 000000000..2c5671bc6 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/repository/todo/OrderTypeDO.java @@ -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 organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/service/OrderTypeDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/service/OrderTypeDomainService.java new file mode 100644 index 000000000..167b7b8d9 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/orderType/service/OrderTypeDomainService.java @@ -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 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 listDict() { + return orderTypeService.listDict(); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/entity/PurchaseOrder.java b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/entity/PurchaseOrder.java new file mode 100644 index 000000000..dd0a7aaca --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/entity/PurchaseOrder.java @@ -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; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/facade/IPurchaseOrderService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/facade/IPurchaseOrderService.java new file mode 100644 index 000000000..4d21677c0 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/facade/IPurchaseOrderService.java @@ -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 +{ + /** + * 分页查询采购订单管理列表 + */ + public List 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 getInfo(List ids); + + Boolean batchUpdate(List purchaseOrderDOS); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/mapper/PurchaseOrderMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/mapper/PurchaseOrderMapper.java new file mode 100644 index 000000000..4c545c04f --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/mapper/PurchaseOrderMapper.java @@ -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 +{ + /** + * 查询采购订单管理列表 + */ + public List 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); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/persistence/PurchaseOrderImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/persistence/PurchaseOrderImpl.java new file mode 100644 index 000000000..974609b17 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/persistence/PurchaseOrderImpl.java @@ -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 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 queryList(PurchaseOrderDO purchaseOrderDO) + { + List 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 list = new ArrayList<>(); + List purchaseOrderPOS = getInfo(Arrays.asList(ids)); + //采购订单 订单状态未审核/已审核状态下才可以删除,否则提示异常 + List 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() + .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() + .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() + .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() + .eq(Logistics::getOrderId, id).eq(Logistics::getDelFlag, 1)); + if (ObjectUtil.isNull(logistics)) { + logistics = new Logistics(); + } + BeanUtils.copyProperties(logistics, logisticsPO); + purchaseOrderDetailsPO.setLogisticsPO(logisticsPO); + + List goodsList = goodsMapper.selectList(new LambdaQueryWrapper() + .eq(Goods::getOrderId, id).eq(Goods::getDelFlag, 1)); + List 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 purchaseOrders = new ArrayList<>(); + List 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 purchaseOrders = new ArrayList<>(); + List 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 getInfo(List ids) { + List purchaseOrders = purchaseOrderMapper.selectList(new LambdaQueryWrapper() + .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 purchaseOrderDOS) { + List 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() + .set(PurchaseOrder::getOrderState, state) + .set(PurchaseOrder::getUpdateBy, loginUser.getUserid()) + .set(PurchaseOrder::getUpdateByName, loginUser.getUsername()) + .set(PurchaseOrder::getUpdateTime, new Date()) + .eq(PurchaseOrder::getId, id)); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/po/PurchaseOrderDetailsPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/po/PurchaseOrderDetailsPO.java new file mode 100644 index 000000000..a74201834 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/po/PurchaseOrderDetailsPO.java @@ -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 goodsPOList; + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/po/PurchaseOrderPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/po/PurchaseOrderPO.java new file mode 100644 index 000000000..7c54137b1 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/po/PurchaseOrderPO.java @@ -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; + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/todo/PurchaseOrderAddDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/todo/PurchaseOrderAddDO.java new file mode 100644 index 000000000..491dcb155 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/todo/PurchaseOrderAddDO.java @@ -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 goodsDOList; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/todo/PurchaseOrderAuditDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/todo/PurchaseOrderAuditDO.java new file mode 100644 index 000000000..c679bc413 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/todo/PurchaseOrderAuditDO.java @@ -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; + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/todo/PurchaseOrderDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/todo/PurchaseOrderDO.java new file mode 100644 index 000000000..3248e1692 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/repository/todo/PurchaseOrderDO.java @@ -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 organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/service/PurchaseOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/service/PurchaseOrderDomainService.java new file mode 100644 index 000000000..b6d675cb2 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/purchaseOrder/service/PurchaseOrderDomainService.java @@ -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 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 getInfo(List ids) { + return purchaseOrderService.getInfo(ids); + } + + public Boolean batchUpdate(List 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); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/entity/ReceiptInfo.java b/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/entity/ReceiptInfo.java new file mode 100644 index 000000000..ae3bfc14b --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/entity/ReceiptInfo.java @@ -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; + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/repository/facade/IReceiptInfoService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/repository/facade/IReceiptInfoService.java new file mode 100644 index 000000000..11088296d --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/repository/facade/IReceiptInfoService.java @@ -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 +{ + /** + * 分页查询收货信息列表 + */ + public List 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 receiptInfoDOList); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/repository/mapper/ReceiptInfoMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/repository/mapper/ReceiptInfoMapper.java new file mode 100644 index 000000000..40f6f9d50 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/repository/mapper/ReceiptInfoMapper.java @@ -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 +{ + /** + * 查询收货信息列表 + */ + public List queryList(ReceiptInfoDO receiptInfoDO); + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/repository/persistence/ReceiptInfoImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/repository/persistence/ReceiptInfoImpl.java new file mode 100644 index 000000000..13c473e34 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/repository/persistence/ReceiptInfoImpl.java @@ -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 implements IReceiptInfoService { + @Autowired + private ReceiptInfoMapper receiptInfoMapper; + + /** + * 查询收货信息列表 + */ + @Override + public List 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 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 receiptInfoDOList) { + List receiptInfoList = receiptInfoDOList.stream().map(receiptInfoDO -> { + ReceiptInfo receiptInfo = new ReceiptInfo(); + BeanUtils.copyProperties(receiptInfoDO, receiptInfo); + return receiptInfo; + }).collect(Collectors.toList()); + + return this.saveBatch(receiptInfoList); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/repository/po/ReceiptInfoPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/repository/po/ReceiptInfoPO.java new file mode 100644 index 000000000..42d8325d6 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/repository/po/ReceiptInfoPO.java @@ -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; + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/repository/todo/ReceiptInfoDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/repository/todo/ReceiptInfoDO.java new file mode 100644 index 000000000..04987993c --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/repository/todo/ReceiptInfoDO.java @@ -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 organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/service/ReceiptInfoDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/service/ReceiptInfoDomainService.java new file mode 100644 index 000000000..3a5933e39 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/receiptInfo/service/ReceiptInfoDomainService.java @@ -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 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 receiptInfoDOList) { + return receiptInfoService.batchInsert(receiptInfoDOList); + } + + /** + * 导入销售订单 - 为传入的收货列表添加一条收货信息 + * + * @param receiptInfoDOList - 添加数据的列表 + * @param salesOrderExcelDTO -导入的数据 + * @param salesOrder - 导入数据中的销售订单信息 + */ + public void listAddFromImportSalesOrder(List 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 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); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/entity/SalesOrder.java b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/entity/SalesOrder.java new file mode 100644 index 000000000..c67487e63 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/entity/SalesOrder.java @@ -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; + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/facade/ISalesOrderService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/facade/ISalesOrderService.java new file mode 100644 index 000000000..d2a8c8b6d --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/facade/ISalesOrderService.java @@ -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 +{ + /** + * 分页查询销售订单列表 + */ + public List 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 getInfos(List ids); + + Boolean batchUpdate(List salesOrderDOS); + + Boolean audit(SalesOrderAuditDO salesOrderAuditDO); + + Boolean cancelAudit(SalesOrderAuditDO salesOrderAuditDO); + + Long insertReturnId(SalesOrderDO salesOrderDO); + + void updateStateById(Long id, Integer state); + + SalesOrderDetailsPO getetails(Long id); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/mapper/SalesOrderMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/mapper/SalesOrderMapper.java new file mode 100644 index 000000000..a759ba85c --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/mapper/SalesOrderMapper.java @@ -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 +{ + /** + * 查询销售订单列表 + */ + public List queryList(SalesOrderDO salesOrderDO); + + List getInfosById(@Param("ids") List 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); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/persistence/SalesOrderImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/persistence/SalesOrderImpl.java new file mode 100644 index 000000000..d7be97cad --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/persistence/SalesOrderImpl.java @@ -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 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 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 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 getInfos(List ids) { + return salesOrderMapper.getInfosById(ids); + } + + @Override + public Boolean batchUpdate(List salesOrderDOS) { + List 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 salesOrders = new ArrayList<>(); + List 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 salesOrders = new ArrayList<>(); + List 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() + .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() + .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() + .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() + .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() + .eq(Logistics::getOrderId, id).eq(Logistics::getDelFlag, 1)); + + if (ObjectUtil.isNull(logistics)) { + logistics = new Logistics(); + } + BeanUtils.copyProperties(logistics, logisticsPO); + salesOrderDetailsPO.setLogisticsPO(logisticsPO); + + List goodsList = goodsMapper.selectList(new LambdaQueryWrapper() + .eq(Goods::getOrderId, id).eq(Goods::getDelFlag, 1)); + List goodsPOList = goodsList.stream().map(goods -> { + GoodsPO goodsPO = new GoodsPO(); + BeanUtils.copyProperties(goods, goodsPO); + return goodsPO; + }).collect(Collectors.toList()); + salesOrderDetailsPO.setGoodsPOList(goodsPOList); + + return salesOrderDetailsPO; + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/po/SalesOrderDetailsPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/po/SalesOrderDetailsPO.java new file mode 100644 index 000000000..4c537186d --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/po/SalesOrderDetailsPO.java @@ -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 goodsPOList; + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/po/SalesOrderPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/po/SalesOrderPO.java new file mode 100644 index 000000000..2224b976f --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/po/SalesOrderPO.java @@ -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; + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/todo/SalesOrderAddDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/todo/SalesOrderAddDO.java new file mode 100644 index 000000000..2e0edc9b5 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/todo/SalesOrderAddDO.java @@ -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 goodsDOS; + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/todo/SalesOrderAuditDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/todo/SalesOrderAuditDO.java new file mode 100644 index 000000000..556b63ef1 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/todo/SalesOrderAuditDO.java @@ -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; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/todo/SalesOrderDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/todo/SalesOrderDO.java new file mode 100644 index 000000000..1c72414a1 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/repository/todo/SalesOrderDO.java @@ -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 organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/service/SalesOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/service/SalesOrderDomainService.java new file mode 100644 index 000000000..e52448624 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/salesOrder/service/SalesOrderDomainService.java @@ -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 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 getInfos(List ids) { + return salesOrderService.getInfos(ids); + } + + public Boolean batchUpdate(List 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); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/entity/ScmOrder.java b/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/entity/ScmOrder.java new file mode 100644 index 000000000..4b31dc3e6 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/entity/ScmOrder.java @@ -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; + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/repository/facade/IScmOrderService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/repository/facade/IScmOrderService.java new file mode 100644 index 000000000..4a0d40637 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/repository/facade/IScmOrderService.java @@ -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 +{ + /** + * 分页查询供应链订单列表 + */ + public List 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 idList); + + /** + * 根据orderID拦截订单 + */ + void interceptByOrderId(Long orderId); + + Boolean batchInsert(List scmOrderDOS); + + List getInfosByOrderId(List ids); + + Boolean batchUpdate(List scmOrderDOS); + + /** + * 获取传入ID列表的全部物料信息列表,按传入的ID分组 + * @param idList - 供应链订单ID列表 + * @return k-供应链id,v-对应物料列表 + */ + Map> getGoodsAndTaskInfoList(List idList); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/repository/mapper/ScmOrderMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/repository/mapper/ScmOrderMapper.java new file mode 100644 index 000000000..1ea90d2b5 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/repository/mapper/ScmOrderMapper.java @@ -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 +{ + /** + * 查询供应链订单列表 + */ + public List queryList(ScmOrderDO scmOrderDO); + + + /** + * 批量修改供应链订单状态 + * + * @param idList - 供应链订单ID列表 + * @param orderState - 订单状态 + * @param userPo - 审核人信息(当前登录人) + */ + Boolean batchUpdateOrderState(@Param("idList") List idList, @Param("orderState") Integer orderState, @Param("userPo") UserPo userPo); + + /** + * 获取传入ID列表中对应的全部物料信息列表 + * @param idList - 供应链订单ID列表 + * @return - 物料信息列表 + */ + List getGoodsAndTaskInfoList(@Param("idList") List 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); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/repository/persistence/ScmOrderImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/repository/persistence/ScmOrderImpl.java new file mode 100644 index 000000000..56e8e7ce4 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/repository/persistence/ScmOrderImpl.java @@ -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 implements IScmOrderService{ + @Autowired + private ScmOrderMapper scmOrderMapper; + + @Resource + private PurchaseOrderMapper purchaseOrderMapper; + + + @Resource + private SalesOrderMapper salesOrderMapper; + + /** + * 查询供应链订单列表 + */ + @Override + public List queryList(ScmOrderDO scmOrderDO) + { + List 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 scmOrders = this.listByIds(Arrays.asList(ids)); + // 供应链订单状态只有是已取消、已拦截状态下的订单才可以删除 + List 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 idList) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if(idList.size() == 0){ + throw new ServiceException("供应链订单ID列表不能为空"); + } + + // 查询列表中符合对应当前操作状态的数据:审核-未审核状态的订单、取消审核-审核通过的订单 + ScmOrderDO scmOrderDO = new ScmOrderDO(idList, exeState); + List 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() + .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 scmOrderDOS) { + List 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 getInfosByOrderId(List ids) { + + List scmOrders = this.scmOrderMapper.selectList(new LambdaQueryWrapper().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 scmOrderDOS) { + List 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> getGoodsAndTaskInfoList(List idList) { + if(idList.size() == 0){ + throw new ServiceException("供应链订单ID不能为空"); + } + List goodsAndTaskInfoList = scmOrderMapper.getGoodsAndTaskInfoList(idList); + return goodsAndTaskInfoList.stream().collect(Collectors.groupingBy(ScmOrderPO::getId)); + } + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/repository/po/ScmOrderPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/repository/po/ScmOrderPO.java new file mode 100644 index 000000000..0d075b29a --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/repository/po/ScmOrderPO.java @@ -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; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/repository/todo/ScmOrderDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/repository/todo/ScmOrderDO.java new file mode 100644 index 000000000..52714044e --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/repository/todo/ScmOrderDO.java @@ -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 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 organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + + public ScmOrderDO(){ + + } + + public ScmOrderDO(List idList, Integer orderState){ + this.idList = idList; + this.orderState = orderState; + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/service/ScmOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/service/ScmOrderDomainService.java new file mode 100644 index 000000000..17a1b9dcf --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/scmOrder/service/ScmOrderDomainService.java @@ -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 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 idList) { + return scmOrderService.batchAuditOrCancelAudit(exeState, idList); + } + + + /** + * 更新供应链订单任务数量、状态 + * 下游作业任务取消后,供应链订单需要进行更新对应的任务数量及状态 + * @param ableCancelledScmIdList - 取消的作业任务列表:ScmId不能为空 + */ + public void updateFromCancelTask(List ableCancelledScmIdList) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + // <供应链订单, List<对应可取消的作业任务列表>> + Map> 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 taskOrderPoList = taskOrderService.queryList(taskOrderDO); + // 作业任务状态分组 + Map> 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 scmOrderDOS) { + return scmOrderService.batchInsert(scmOrderDOS); + } + + public List getInfosByOrderId(List ids) { + return scmOrderService.getInfosByOrderId(ids); + } + + public Boolean batchUpdate(List scmOrderDOS) { + return scmOrderService.batchUpdate(scmOrderDOS); + } + + /** + * 获取传入列表中对应的物料信息列表,按传入的ID分组 + * @param idList 供应链订单ID列表 + * @return k-供应链id,v-对应物料列表 + */ + public Map> getGoodsAndTaskInfoList(List idList) { + Map> scmGoodsMap = scmOrderService.getGoodsAndTaskInfoList(idList); + if(scmGoodsMap.size() != idList.size()){ + List ableCreateId = new ArrayList<>(scmGoodsMap.keySet()); + idList.removeAll(ableCreateId); + throw new ServiceException("供应链订单ID:"+ idList + "异常,不可生成任务"); + } + return scmGoodsMap; + } + + /** + * 更新key中的供应链订单,组装传入的物料列表为作业任务并返回 + * @param scmGoodsMap - 供应链订单对应的所有物料的信息列表 + * @return - 应新增的作业任务列表 + */ + public List handlerbatchCreateTaskOrder(Map> scmGoodsMap) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + + List taskOrderList = new ArrayList<>(); + List 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 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; + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/entity/Settlement.java b/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/entity/Settlement.java new file mode 100644 index 000000000..9f8a58c1a --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/entity/Settlement.java @@ -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; + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/repository/facade/ISettlementService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/repository/facade/ISettlementService.java new file mode 100644 index 000000000..d167e4101 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/repository/facade/ISettlementService.java @@ -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 +{ + /** + * 分页查询结算信息列表 + */ + public List 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 settlementDOList); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/repository/mapper/SettlementMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/repository/mapper/SettlementMapper.java new file mode 100644 index 000000000..d85bc0a4b --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/repository/mapper/SettlementMapper.java @@ -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 +{ + /** + * 查询结算信息列表 + */ + public List queryList(SettlementDO settlementDO); + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/repository/persistence/SettlementImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/repository/persistence/SettlementImpl.java new file mode 100644 index 000000000..6f35e4931 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/repository/persistence/SettlementImpl.java @@ -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 implements ISettlementService{ + @Autowired + private SettlementMapper settlementMapper; + + /** + * 查询结算信息列表 + */ + @Override + public List 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 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 settlementDOList) { + List settlementList = settlementDOList.stream().map(settlementDO -> { + Settlement settlement = new Settlement(); + BeanUtils.copyProperties(settlementDO, settlement); + return settlement; + }).collect(Collectors.toList()); + + return this.saveBatch(settlementList); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/repository/po/SettlementPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/repository/po/SettlementPO.java new file mode 100644 index 000000000..38a9101c1 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/repository/po/SettlementPO.java @@ -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; + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/repository/todo/SettlementDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/repository/todo/SettlementDO.java new file mode 100644 index 000000000..abeaddce6 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/repository/todo/SettlementDO.java @@ -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 organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/service/SettlementDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/service/SettlementDomainService.java new file mode 100644 index 000000000..a7db306af --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/settlement/service/SettlementDomainService.java @@ -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 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 settlementDOList) { + return settlementService.batchInsert(settlementDOList); + } + + /** + * 导入销售订单 - 为传入的结算列表添加一条结算信息 + * + * @param settlementDOList - 添加数据的列表 + * @param salesOrderExcelDTO -导入的数据 + * @param salesOrder - 导入数据中的销售订单信息 + */ + public void listAddFromImportSalesOrder(List 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 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); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/entity/TaskOrder.java b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/entity/TaskOrder.java new file mode 100644 index 000000000..7a2fa124d --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/entity/TaskOrder.java @@ -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; + } + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/facade/ITaskOrderService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/facade/ITaskOrderService.java new file mode 100644 index 000000000..ff23973a0 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/facade/ITaskOrderService.java @@ -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 +{ + /** + * 分页查询作业任务列表 + */ + List 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 taskOrderDOList); + + /** + * 根据供应链订单ID获取作业任务中有效【未下发、已下发、已完成】物料数量 + * @param scmId - 供应链订单ID + * @param goodsId - 物料ID + * @return 有效物料数量 + */ + BigDecimal queryEffectiveNumByScmId(Long scmId, Long goodsId); + + Boolean batchUpdate(List taskOrderDOS); + + List getPoTaskDetail(List ids); + + Integer getQuantityDeliver(List ids); + + TaskOrderPO getInfoByTaskNo(String taskNo); + + + /** + * 获取给定ID列表中可取消的作业任务 + * @param idList - 作业任务ID列表 + * @return - 可取消的作业任务 + */ + List getAbleCancelledTaskList(List idList); + + /** + * 取消作业任务 + * + * @param idList - 取消的作业任务ID + */ + void cancelTaskOrder(List idList); + + /** + * 根据订单ORDER_ID修改作业任务为拦截状态 + * @param orderId - 订单ID + */ + void interceptByOrderId(Long orderId); + + List getInfos(List ids); + + List getInfoByIds(List ids); + + List getInfosByOrderId(List ids); + + /** + * 根据orderId获取任务列表 + * @param idList - 【采购|销售|运输】订单ID列表 + * @param sourceType - 调用方来源类型:1-采购订单、2-销售订单 + */ + List queryListByOrderId(List idList, Integer sourceType); + + OrderInfoPO getOrderInfo(TaskOrderDO taskOrderDO); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/mapper/TaskOrderMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/mapper/TaskOrderMapper.java new file mode 100644 index 000000000..ba77c0e0e --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/mapper/TaskOrderMapper.java @@ -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 +{ + /** + * 查询作业任务列表 + */ + public List 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 getPoTaskDetail(@Param("ids") List ids); + + /** + * 取消作业任务 + * + * @param idList - 取消的作业任务ID + * @return - 可取消的作业任务 + */ + List getAbleCancelledTaskList(@Param("idList") List idList); + + List getInfoByIds(@Param("ids") List ids); + + List queryPurListByOrderId(@Param("orderIdList") List orderIdList); + + List querySalesListByOrderId(@Param("orderIdList") List orderIdList); + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/persistence/TaskOrderImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/persistence/TaskOrderImpl.java new file mode 100644 index 000000000..20337b708 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/persistence/TaskOrderImpl.java @@ -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 implements ITaskOrderService{ + @Resource + private TaskOrderMapper taskOrderMapper; + + @Resource + private PurchaseOrderMapper purchaseOrderMapper; + + + @Resource + private SalesOrderMapper salesOrderMapper; + + @Resource + private OrderTypeMapper orderTypeMapper; + + /** + * 查询作业任务列表 + */ + @Override + public List 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 taskOrders = this.listByIds(Arrays.asList(ids)); + //作业任务只有已拦截、已取消的作业任务才可以删除作业任务 + List 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() + .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 taskOrderDOList) { + List 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 taskOrderDOS) { + List 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 getPoTaskDetail(List ids) { + return taskOrderMapper.getPoTaskDetail(ids); + } + + @Override + public Integer getQuantityDeliver(List ids) { + return taskOrderMapper.selectCount(new LambdaQueryWrapper() + .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() + .eq(TaskOrder::getTaskNo, taskNo).eq(TaskOrder::getDelFlag,1)); + if (ObjectUtil.isNull(taskOrder)) { + taskOrder = new TaskOrder(); + } + BeanUtils.copyProperties(taskOrder,taskOrderPO); + return taskOrderPO; + } + + @Override + public List getAbleCancelledTaskList(List idList) { + return taskOrderMapper.getAbleCancelledTaskList(idList); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void cancelTaskOrder(List idList) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + taskOrderMapper.update(new TaskOrder(), new LambdaUpdateWrapper() + .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 getInfos(List ids) { + List 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 getInfoByIds(List ids) { + return taskOrderMapper.getInfoByIds(ids); + } + + @Override + public List getInfosByOrderId(List ids) { + List taskOrders = this.taskOrderMapper.selectList(new LambdaQueryWrapper() + .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() + .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 queryListByOrderId(List idList, Integer sourceType) + { + List 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; + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/po/PoTaskDetailPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/po/PoTaskDetailPO.java new file mode 100644 index 000000000..542c5654b --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/po/PoTaskDetailPO.java @@ -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; + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/po/TaskOrderPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/po/TaskOrderPO.java new file mode 100644 index 000000000..a4a9bca31 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/po/TaskOrderPO.java @@ -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; + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/po/TaskUpperDataPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/po/TaskUpperDataPO.java new file mode 100644 index 000000000..303aceef3 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/po/TaskUpperDataPO.java @@ -0,0 +1,33 @@ +package com.mhd.oms.domain.taskOrder.repository.po; + +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.oms.domain.purchaseOrder.repository.po.PurchaseOrderPO; +import com.mhd.oms.domain.salesOrder.repository.po.SalesOrderPO; +import com.mhd.oms.domain.scmOrder.repository.po.ScmOrderPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 作业任务上层数据集 + * + * @author gen + * @date 2024-05-24 + */ + +@Data +@ApiModel(value = "作业任务上层数据集", description = "作业任务上层数据集") +public class TaskUpperDataPO extends BaseVOEntity { + + @ApiModelProperty("上层采购订单") + private PurchaseOrderPO purOrderPo; + + @ApiModelProperty("上层销售订单") + private SalesOrderPO salesOrderPo; + + @ApiModelProperty("上层供应链订单") + private ScmOrderPO scmOrder; + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/todo/CreateTaskOrderDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/todo/CreateTaskOrderDO.java new file mode 100644 index 000000000..2343028b4 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/todo/CreateTaskOrderDO.java @@ -0,0 +1,52 @@ +package com.mhd.oms.domain.taskOrder.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.oms.interfaces.dto.taskOrder.CreateTaskOrderGoodsInfoDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + + +/** + * 作业任务对象 oms_task_order + * + * @author gen + * @date 2024-05-24 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +public class CreateTaskOrderDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("供应链订单ID") + private Long scmId; + + @ApiModelProperty("仓库ID") + private Long warehouseId; + + @ApiModelProperty("商品") + private List goodsInfoList; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("生成作业方式:0-根据所填数量生成、1-全部生成") + private Integer createType; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/todo/CreateTaskOrderGoodsInfoDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/todo/CreateTaskOrderGoodsInfoDO.java new file mode 100644 index 000000000..bc184e233 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/todo/CreateTaskOrderGoodsInfoDO.java @@ -0,0 +1,28 @@ +package com.mhd.oms.domain.taskOrder.repository.todo; + +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 +public class CreateTaskOrderGoodsInfoDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("计划任务数量") + private BigDecimal planNum; + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/todo/TaskOrderDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/todo/TaskOrderDO.java new file mode 100644 index 000000000..af492ba97 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/repository/todo/TaskOrderDO.java @@ -0,0 +1,90 @@ +package com.mhd.oms.domain.taskOrder.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_task_order + * + * @author gen + * @date 2024-05-24 + */ + +@Data +public class TaskOrderDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + private List idList; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("供应链订单ID") + private Long scmId; + private List scmIdList; + @ApiModelProperty("物料ID") + private Long goodsId; + @ApiModelProperty("订单ID") + private Long orderId; + private List orderIdList; + + @ApiModelProperty("任务状态:0-未下发、1-已下发、2-已完成、3-已拦截、4-已取消") + private Integer taskStatus; + private List taskStatusList; + + @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("供应链订单来源:1-采购订单、2-销售订单、3-运输订单") + private Integer scmSource; + + + public TaskOrderDO(){ + + } + + public TaskOrderDO(List idList){ + this.idList = idList; + } + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/service/TaskOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/service/TaskOrderDomainService.java new file mode 100644 index 000000000..f2f718fee --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/taskOrder/service/TaskOrderDomainService.java @@ -0,0 +1,164 @@ +package com.mhd.oms.domain.taskOrder.service; + +import com.mhd.common.core.exception.ServiceException; +import com.mhd.oms.domain.OrderInfoPO; +import com.mhd.oms.domain.taskOrder.repository.facade.ITaskOrderService; +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 lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 作业任务 + * + * @author gen + * @date 2024-05-24 + */ +@Service +@Slf4j +public class TaskOrderDomainService { + + @Autowired + private ITaskOrderService taskOrderService; + + + /** + * 分页查询作业任务列表 + */ + public List queryList(TaskOrderDO taskOrderDO) { + return taskOrderService.queryList(taskOrderDO); + } + + + /** + * 新增作业任务 + */ + public Boolean insert(TaskOrderDO taskOrderDO) { + + return taskOrderService.insert(taskOrderDO); + } + + /** + * 修改作业任务 + */ + public Boolean update(TaskOrderDO taskOrderDO) { + return taskOrderService.update(taskOrderDO); + } + + /** + * 批量删除作业任务 + */ + public Boolean delete(Long[] ids) { + return taskOrderService.delete(ids); + } + + /** + * 获取作业任务详细信息 + */ + public TaskOrderPO getInfo(Long id) + { + return taskOrderService.getInfo(id); + } + + /** + * 批量新增 + */ + public Boolean batchInsert(List taskOrderDOList) { + return taskOrderService.batchInsert(taskOrderDOList); + } + + + /** + * 根据供应链订单ID获取作业任务中有效【未下发、已下发、已完成】物料数量 + * @param scmId - 供应链订单ID + * @param goodsId - 物料ID + * @return 作业任务重有效物料数量 + */ + public BigDecimal queryEffectiveNumByScmId(Long scmId, Long goodsId) { + return taskOrderService.queryEffectiveNumByScmId(scmId, goodsId); + } + + public Boolean batchUpdate(List taskOrderDOS) { + return taskOrderService.batchUpdate(taskOrderDOS); + } + + public List getPoTaskDetail(List ids) { + return taskOrderService.getPoTaskDetail(ids); + } + + public Integer getQuantityDeliver(List ids) { + return taskOrderService.getQuantityDeliver(ids); + } + + public TaskOrderPO getInfoByTaskNo(String taskNo) { + return taskOrderService.getInfoByTaskNo(taskNo); + } + + /** + * 取消作业任务 + * + * @param idList - 取消的作业任务ID + * @return - 可取消的作业任务 + */ + public List cancelTaskOrder(List idList) { + List ableCancelledScmIdList = taskOrderService.getAbleCancelledTaskList(idList); + if(ableCancelledScmIdList.size() != idList.size()){ + throw new ServiceException("请检查是否存在不可取消任务!"); + } + taskOrderService.cancelTaskOrder(idList); + return ableCancelledScmIdList; + } + + public List getInfos(List ids) { + return taskOrderService.getInfos(ids); + } + + /** + * 根据ids集合查询所有的任务信息包括已合并的任务信息 + * @param ids + * @return + */ + public List getInfoByIds(List ids) { + return taskOrderService.getInfoByIds(ids); + } + + /** + * 根据订单ID查询所有的任务信息 + * @param ids + * @return + */ + public List getInfosByOrderId(List ids) { + return taskOrderService.getInfosByOrderId(ids); + } + + /** + * 根据orderId获取任务列表并分组 + * @param idList - 订单ID列表 + * @param sourceType - 调用方来源类型:1-采购订单、2-销售订单 + * @return - k-订单ID、v-对应任务列表 + */ + public Map> getMapByOrderIdList(List idList, Integer sourceType) { + List taskOrderList = taskOrderService.queryListByOrderId(idList, sourceType); + + return taskOrderList.stream().collect(Collectors.groupingBy(TaskOrderPO::getOrderId)); + } + + /** + * 根据订单ORDER_ID修改作业任务为拦截状态 + * @param orderId - 订单ID + */ + public void interceptByOrderId(Long orderId) { + taskOrderService.interceptByOrderId(orderId); + } + + public OrderInfoPO getOrderInfo(TaskOrderDO taskOrderDO) { + return taskOrderService.getOrderInfo(taskOrderDO); + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/infrastructure/feign/vo/SysDictDataVo.java b/mhd_oms/src/main/java/com/mhd/oms/infrastructure/feign/vo/SysDictDataVo.java new file mode 100644 index 000000000..990266db0 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/infrastructure/feign/vo/SysDictDataVo.java @@ -0,0 +1,60 @@ +package com.mhd.oms.infrastructure.feign.vo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.annotation.Excel.ColumnType; +import lombok.Data; + +/** + * 字典数据表 sys_dict_data + * + * @author mhd + */ +@Data +public class SysDictDataVo +{ + private static final long serialVersionUID = 1L; + + /** 字典编码 */ + @Excel(name = "字典编码", cellType = ColumnType.NUMERIC) + private Long dictCode; + + /** 字典排序 */ + @Excel(name = "字典排序", cellType = ColumnType.NUMERIC) + private Long dictSort; + + /** 字典标签 */ + @Excel(name = "字典标签") + private String dictLabel; + + /** 字典键值 */ + @Excel(name = "字典键值") + private String dictValue; + + /** 字典类型 */ + @Excel(name = "字典类型") + private String dictType; + + /** 样式属性(其他样式扩展) */ + private String cssClass; + + /** 表格字典样式 */ + private String listClass; + + /** 是否默认(Y是 N否) */ + @Excel(name = "是否默认", readConverterExp = "Y=是,N=否") + private String isDefault; + + /** 状态(0正常 1停用) */ + @Excel(name = "状态", readConverterExp = "0=正常,1=停用") + private String status; + + /** 组织表ID */ + private Long organizationId; + + /** 组织名称 */ + private String organizationName; + + /** 一级组织表ID */ + private Long topOrganizationId; + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/deliveryInfo/DeliveryInfoAssembler.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/deliveryInfo/DeliveryInfoAssembler.java new file mode 100644 index 000000000..efbf99273 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/deliveryInfo/DeliveryInfoAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.oms.interfaces.assembler.deliveryInfo; + +import cn.hutool.core.util.ObjectUtil; +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.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.oms.domain.deliveryInfo.repository.todo.DeliveryInfoDO; +import com.mhd.oms.interfaces.dto.deliveryInfo.DeliveryInfoDTO; +import com.mhd.system.api.model.LoginUser; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 发货信息Assembler + * + * @author gen + * @date 2024-05-16 + */ +@Component +public class DeliveryInfoAssembler { + + /** + * 转换实体 + */ + public DeliveryInfoDO toDO(DeliveryInfoDTO deliveryInfoDTO) { + DeliveryInfoDO deliveryInfoDO = new DeliveryInfoDO(); + // 拷贝 + BeanUtils.copyProperties(deliveryInfoDTO, deliveryInfoDO, IgnoreNullUtil.getNullPropertyNames(deliveryInfoDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(deliveryInfoDTO.getId() != null){ + if(userId != null){ + deliveryInfoDO.setUpdateBy(userId); + }else { + deliveryInfoDO.setUpdateBy(new Long("0")); + } + deliveryInfoDO.setUpdateByName(userName); + deliveryInfoDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + deliveryInfoDO.setCreateBy(userId); + deliveryInfoDO.setUpdateBy(userId); + }else { + deliveryInfoDO.setCreateBy(new Long("0")); + deliveryInfoDO.setUpdateBy(new Long("0")); + } + deliveryInfoDO.setCreateByName(userName); + deliveryInfoDO.setUpdateByName(userName); + deliveryInfoDO.setCreateTime(new Date()); + deliveryInfoDO.setUpdateTime(new Date()); + deliveryInfoDO.setDelFlag(1); + } + return deliveryInfoDO; + } + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/goods/GoodsAssembler.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/goods/GoodsAssembler.java new file mode 100644 index 000000000..06bf59447 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/goods/GoodsAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.oms.interfaces.assembler.goods; + +import cn.hutool.core.util.ObjectUtil; +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.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.oms.domain.goods.repository.todo.GoodsDO; +import com.mhd.oms.interfaces.dto.goods.GoodsDTO; +import com.mhd.system.api.model.LoginUser; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 商品信息Assembler + * + * @author gen + * @date 2024-05-16 + */ +@Component +public class GoodsAssembler { + + /** + * 转换实体 + */ + public GoodsDO toDO(GoodsDTO goodsDTO) { + GoodsDO goodsDO = new GoodsDO(); + // 拷贝 + BeanUtils.copyProperties(goodsDTO, goodsDO, IgnoreNullUtil.getNullPropertyNames(goodsDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(goodsDTO.getId() != null){ + if(userId != null){ + goodsDO.setUpdateBy(userId); + }else { + goodsDO.setUpdateBy(new Long("0")); + } + goodsDO.setUpdateByName(userName); + goodsDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + goodsDO.setCreateBy(userId); + goodsDO.setUpdateBy(userId); + }else { + goodsDO.setCreateBy(new Long("0")); + goodsDO.setUpdateBy(new Long("0")); + } + goodsDO.setCreateByName(userName); + goodsDO.setUpdateByName(userName); + goodsDO.setCreateTime(new Date()); + goodsDO.setUpdateTime(new Date()); + goodsDO.setDelFlag(1); + } + return goodsDO; + } + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/interceptOrder/InterceptOrderAssembler.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/interceptOrder/InterceptOrderAssembler.java new file mode 100644 index 000000000..92bbed9ea --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/interceptOrder/InterceptOrderAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.oms.interfaces.assembler.interceptOrder; + +import cn.hutool.core.util.ObjectUtil; +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.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.oms.domain.interceptOrder.repository.todo.InterceptOrderDO; +import com.mhd.oms.interfaces.dto.interceptOrder.InterceptOrderDTO; +import com.mhd.system.api.model.LoginUser; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 拦截订单Assembler + * + * @author gen + * @date 2024-05-30 + */ +@Component +public class InterceptOrderAssembler { + + /** + * 转换实体 + */ + public InterceptOrderDO toDO(InterceptOrderDTO interceptOrderDTO) { + InterceptOrderDO interceptOrderDO = new InterceptOrderDO(); + // 拷贝 + BeanUtils.copyProperties(interceptOrderDTO, interceptOrderDO, IgnoreNullUtil.getNullPropertyNames(interceptOrderDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(interceptOrderDTO.getId() != null){ + if(userId != null){ + interceptOrderDO.setUpdateBy(userId); + }else { + interceptOrderDO.setUpdateBy(new Long("0")); + } + interceptOrderDO.setUpdateByName(userName); + interceptOrderDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + interceptOrderDO.setCreateBy(userId); + interceptOrderDO.setUpdateBy(userId); + }else { + interceptOrderDO.setCreateBy(new Long("0")); + interceptOrderDO.setUpdateBy(new Long("0")); + } + interceptOrderDO.setCreateByName(userName); + interceptOrderDO.setUpdateByName(userName); + interceptOrderDO.setCreateTime(new Date()); + interceptOrderDO.setUpdateTime(new Date()); + interceptOrderDO.setDelFlag(1); + } + return interceptOrderDO; + } + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/logistics/LogisticsAssembler.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/logistics/LogisticsAssembler.java new file mode 100644 index 000000000..12ab130cf --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/logistics/LogisticsAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.oms.interfaces.assembler.logistics; + +import cn.hutool.core.util.ObjectUtil; +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.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.oms.domain.logistics.repository.todo.LogisticsDO; +import com.mhd.oms.interfaces.dto.logistics.LogisticsDTO; +import com.mhd.system.api.model.LoginUser; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 物流信息Assembler + * + * @author gen + * @date 2024-05-16 + */ +@Component +public class LogisticsAssembler { + + /** + * 转换实体 + */ + public LogisticsDO toDO(LogisticsDTO logisticsDTO) { + LogisticsDO logisticsDO = new LogisticsDO(); + // 拷贝 + BeanUtils.copyProperties(logisticsDTO, logisticsDO, IgnoreNullUtil.getNullPropertyNames(logisticsDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(logisticsDTO.getId() != null){ + if(userId != null){ + logisticsDO.setUpdateBy(userId); + }else { + logisticsDO.setUpdateBy(new Long("0")); + } + logisticsDO.setUpdateByName(userName); + logisticsDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + logisticsDO.setCreateBy(userId); + logisticsDO.setUpdateBy(userId); + }else { + logisticsDO.setCreateBy(new Long("0")); + logisticsDO.setUpdateBy(new Long("0")); + } + logisticsDO.setCreateByName(userName); + logisticsDO.setUpdateByName(userName); + logisticsDO.setCreateTime(new Date()); + logisticsDO.setUpdateTime(new Date()); + logisticsDO.setDelFlag(1); + } + return logisticsDO; + } + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/orderType/OrderTypeAssembler.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/orderType/OrderTypeAssembler.java new file mode 100644 index 000000000..f52c2c9af --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/orderType/OrderTypeAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.oms.interfaces.assembler.orderType; + +import cn.hutool.core.util.ObjectUtil; +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.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.oms.domain.orderType.repository.todo.OrderTypeDO; +import com.mhd.oms.interfaces.dto.orderType.OrderTypeDTO; +import com.mhd.system.api.model.LoginUser; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 订单类型关系Assembler + * + * @author gen + * @date 2024-05-15 + */ +@Component +public class OrderTypeAssembler { + + /** + * 转换实体 + */ + public OrderTypeDO toDO(OrderTypeDTO orderTypeDTO) { + OrderTypeDO orderTypeDO = new OrderTypeDO(); + // 拷贝 + BeanUtils.copyProperties(orderTypeDTO, orderTypeDO, IgnoreNullUtil.getNullPropertyNames(orderTypeDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(orderTypeDTO.getId() != null){ + if(userId != null){ + orderTypeDO.setUpdateBy(userId); + }else { + orderTypeDO.setUpdateBy(new Long("0")); + } + orderTypeDO.setUpdateByName(userName); + orderTypeDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + orderTypeDO.setCreateBy(userId); + orderTypeDO.setUpdateBy(userId); + }else { + orderTypeDO.setCreateBy(new Long("0")); + orderTypeDO.setUpdateBy(new Long("0")); + } + orderTypeDO.setCreateByName(userName); + orderTypeDO.setUpdateByName(userName); + orderTypeDO.setCreateTime(new Date()); + orderTypeDO.setUpdateTime(new Date()); + orderTypeDO.setDelFlag(1); + } + return orderTypeDO; + } + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/purchaseOrder/PurchaseOrderAssembler.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/purchaseOrder/PurchaseOrderAssembler.java new file mode 100644 index 000000000..152bddcd7 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/purchaseOrder/PurchaseOrderAssembler.java @@ -0,0 +1,230 @@ +package com.mhd.oms.interfaces.assembler.purchaseOrder; + +import cn.hutool.core.util.ObjectUtil; +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.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +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.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.receiptInfo.repository.todo.ReceiptInfoDO; +import com.mhd.oms.domain.settlement.repository.todo.SettlementDO; +import com.mhd.oms.interfaces.dto.deliveryInfo.DeliveryInfoDTO; +import com.mhd.oms.interfaces.dto.goods.GoodsDTO; +import com.mhd.oms.interfaces.dto.logistics.LogisticsDTO; +import com.mhd.oms.interfaces.dto.purchaseOrder.PurchaseOrderAddDTO; +import com.mhd.oms.interfaces.dto.purchaseOrder.PurchaseOrderAuditDTO; +import com.mhd.oms.interfaces.dto.purchaseOrder.PurchaseOrderDTO; +import com.mhd.oms.interfaces.dto.receiptInfo.ReceiptInfoDTO; +import com.mhd.oms.interfaces.dto.settlement.SettlementDTO; +import com.mhd.system.api.model.LoginUser; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 采购订单管理Assembler + * + * @author gen + * @date 2024-05-16 + */ +@Component +public class PurchaseOrderAssembler { + + /** + * 转换实体 + */ + public PurchaseOrderDO toDO(PurchaseOrderDTO purchaseOrderDTO) { + PurchaseOrderDO purchaseOrderDO = new PurchaseOrderDO(); + // 拷贝 + BeanUtils.copyProperties(purchaseOrderDTO, purchaseOrderDO, IgnoreNullUtil.getNullPropertyNames(purchaseOrderDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(purchaseOrderDTO.getId() != null){ + if(userId != null){ + purchaseOrderDO.setUpdateBy(userId); + }else { + purchaseOrderDO.setUpdateBy(new Long("0")); + } + purchaseOrderDO.setUpdateByName(userName); + purchaseOrderDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + purchaseOrderDO.setCreateBy(userId); + purchaseOrderDO.setUpdateBy(userId); + }else { + purchaseOrderDO.setCreateBy(new Long("0")); + purchaseOrderDO.setUpdateBy(new Long("0")); + } + purchaseOrderDO.setCreateByName(userName); + purchaseOrderDO.setUpdateByName(userName); + purchaseOrderDO.setCreateTime(new Date()); + purchaseOrderDO.setUpdateTime(new Date()); + purchaseOrderDO.setDelFlag(1); + } + return purchaseOrderDO; + } + + public PurchaseOrderAddDO toOrderDo(PurchaseOrderAddDTO purchaseOrderAddDTO) { + + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + // 获取登陆人姓名 + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + + PurchaseOrderAddDO purchaseOrderAddDO = new PurchaseOrderAddDO(); + /**采购订单基本信息处理**/ + PurchaseOrderDO purchaseOrderDO = new PurchaseOrderDO(); + PurchaseOrderDTO purchaseOrderDTO = purchaseOrderAddDTO.getPurchaseOrderDTO(); + BeanUtils.copyProperties(purchaseOrderDTO, purchaseOrderDO, IgnoreNullUtil.getNullPropertyNames(purchaseOrderDTO)); + if(purchaseOrderDTO.getId() != null){ + purchaseOrderDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + purchaseOrderDO.setUpdateByName(userName); + purchaseOrderDO.setUpdateTime(new Date()); + } else { + purchaseOrderDO.setCreateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + purchaseOrderDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + purchaseOrderDO.setCreateByName(userName); + purchaseOrderDO.setUpdateByName(userName); + purchaseOrderDO.setCreateTime(new Date()); + purchaseOrderDO.setUpdateTime(new Date()); + purchaseOrderDO.setDelFlag(1); + } + purchaseOrderAddDO.setPurchaseOrderDo(purchaseOrderDO); + /**采购订单基本信息处理**/ + /**采购订单结算信息处理**/ + SettlementDO settlementDO = new SettlementDO(); + SettlementDTO settlementDTO = purchaseOrderAddDTO.getSettlementDTO(); + BeanUtils.copyProperties(settlementDTO, settlementDO, IgnoreNullUtil.getNullPropertyNames(settlementDTO)); + if(settlementDTO.getId() != null){ + settlementDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + settlementDO.setUpdateByName(userName); + settlementDO.setUpdateTime(new Date()); + } else { + settlementDO.setCreateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + settlementDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + settlementDO.setCreateByName(userName); + settlementDO.setUpdateByName(userName); + settlementDO.setCreateTime(new Date()); + settlementDO.setUpdateTime(new Date()); + settlementDO.setDelFlag(1); + } + purchaseOrderAddDO.setSettlementDo(settlementDO); + /**采购订单结算信息处理**/ + /**采购订单发货信息处理**/ + DeliveryInfoDO deliveryInfoDO = new DeliveryInfoDO(); + DeliveryInfoDTO deliveryInfoDTO = purchaseOrderAddDTO.getDeliveryInfoDTO(); + BeanUtils.copyProperties(deliveryInfoDTO, deliveryInfoDO, IgnoreNullUtil.getNullPropertyNames(deliveryInfoDTO)); + if(deliveryInfoDTO.getId() != null){ + deliveryInfoDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + deliveryInfoDO.setUpdateByName(userName); + deliveryInfoDO.setUpdateTime(new Date()); + } else { + deliveryInfoDO.setCreateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + deliveryInfoDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + deliveryInfoDO.setCreateByName(userName); + deliveryInfoDO.setUpdateByName(userName); + deliveryInfoDO.setCreateTime(new Date()); + deliveryInfoDO.setUpdateTime(new Date()); + deliveryInfoDO.setDelFlag(1); + } + purchaseOrderAddDO.setDeliveryInfoDo(deliveryInfoDO); + /**采购订单发货信息处理**/ + /**采购订单收货信息处理**/ + ReceiptInfoDO receiptInfoDO = new ReceiptInfoDO(); + ReceiptInfoDTO receiptInfoDTO = purchaseOrderAddDTO.getReceiptInfoDTO(); + BeanUtils.copyProperties(receiptInfoDTO, receiptInfoDO, IgnoreNullUtil.getNullPropertyNames(receiptInfoDTO)); + if(receiptInfoDTO.getId() != null){ + receiptInfoDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + receiptInfoDO.setUpdateByName(userName); + receiptInfoDO.setUpdateTime(new Date()); + } else { + receiptInfoDO.setCreateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + receiptInfoDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + receiptInfoDO.setCreateByName(userName); + receiptInfoDO.setUpdateByName(userName); + receiptInfoDO.setCreateTime(new Date()); + receiptInfoDO.setUpdateTime(new Date()); + receiptInfoDO.setDelFlag(1); + } + purchaseOrderAddDO.setReceiptInfoDo(receiptInfoDO); + /**采购订单收货信息处理**/ + /**采购订单物流信息处理**/ + LogisticsDO logisticsDO = new LogisticsDO(); + LogisticsDTO logisticsDTO = purchaseOrderAddDTO.getLogisticsDTO(); + BeanUtils.copyProperties(logisticsDTO, logisticsDO, IgnoreNullUtil.getNullPropertyNames(logisticsDTO)); + if(logisticsDTO.getId() != null){ + logisticsDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + logisticsDO.setUpdateByName(userName); + logisticsDO.setUpdateTime(new Date()); + } else { + logisticsDO.setCreateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + logisticsDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + logisticsDO.setCreateByName(userName); + logisticsDO.setUpdateByName(userName); + logisticsDO.setCreateTime(new Date()); + logisticsDO.setUpdateTime(new Date()); + logisticsDO.setDelFlag(1); + } + purchaseOrderAddDO.setLogisticsDo(logisticsDO); + /**采购订单物流信息处理**/ + /**采购订单物料信息处理**/ + List goodsDTOList = purchaseOrderAddDTO.getGoodsDTOList(); + List goodsDOList = goodsDTOList.stream().map(goodsDTO -> { + GoodsDO goodsDO = new GoodsDO(); + BeanUtils.copyProperties(goodsDTO, goodsDO, IgnoreNullUtil.getNullPropertyNames(goodsDTO)); + goodsDO.setCreateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + goodsDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + goodsDO.setCreateByName(userName); + goodsDO.setUpdateByName(userName); + goodsDO.setCreateTime(new Date()); + goodsDO.setUpdateTime(new Date()); + goodsDO.setDelFlag(1); + return goodsDO; + }).collect(Collectors.toList()); + purchaseOrderAddDO.setGoodsDOList(goodsDOList); + /**采购订单物料信息处理**/ + return purchaseOrderAddDO; + } + + public PurchaseOrderAuditDO toAuditDO(PurchaseOrderAuditDTO purchaseOrderAuditDTO) { + + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + // 获取登陆人姓名 + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + + + PurchaseOrderAuditDO purchaseOrderAuditDO = new PurchaseOrderAuditDO(); + BeanUtils.copyProperties(purchaseOrderAuditDTO, purchaseOrderAuditDO, IgnoreNullUtil.getNullPropertyNames(purchaseOrderAuditDTO)); + purchaseOrderAuditDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + purchaseOrderAuditDO.setUpdateByName(userName); + purchaseOrderAuditDO.setUpdateTime(new Date()); + purchaseOrderAuditDO.setAuditBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + purchaseOrderAuditDO.setAuditTime(new Date()); + + return purchaseOrderAuditDO; + + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/receiptInfo/ReceiptInfoAssembler.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/receiptInfo/ReceiptInfoAssembler.java new file mode 100644 index 000000000..2857a2661 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/receiptInfo/ReceiptInfoAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.oms.interfaces.assembler.receiptInfo; + +import cn.hutool.core.util.ObjectUtil; +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.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.oms.domain.receiptInfo.repository.todo.ReceiptInfoDO; +import com.mhd.oms.interfaces.dto.receiptInfo.ReceiptInfoDTO; +import com.mhd.system.api.model.LoginUser; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 收货信息Assembler + * + * @author gen + * @date 2024-05-16 + */ +@Component +public class ReceiptInfoAssembler { + + /** + * 转换实体 + */ + public ReceiptInfoDO toDO(ReceiptInfoDTO receiptInfoDTO) { + ReceiptInfoDO receiptInfoDO = new ReceiptInfoDO(); + // 拷贝 + BeanUtils.copyProperties(receiptInfoDTO, receiptInfoDO, IgnoreNullUtil.getNullPropertyNames(receiptInfoDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(receiptInfoDTO.getId() != null){ + if(userId != null){ + receiptInfoDO.setUpdateBy(userId); + }else { + receiptInfoDO.setUpdateBy(new Long("0")); + } + receiptInfoDO.setUpdateByName(userName); + receiptInfoDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + receiptInfoDO.setCreateBy(userId); + receiptInfoDO.setUpdateBy(userId); + }else { + receiptInfoDO.setCreateBy(new Long("0")); + receiptInfoDO.setUpdateBy(new Long("0")); + } + receiptInfoDO.setCreateByName(userName); + receiptInfoDO.setUpdateByName(userName); + receiptInfoDO.setCreateTime(new Date()); + receiptInfoDO.setUpdateTime(new Date()); + receiptInfoDO.setDelFlag(1); + } + return receiptInfoDO; + } + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/salesOrder/SalesOrderAssembler.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/salesOrder/SalesOrderAssembler.java new file mode 100644 index 000000000..762b370fd --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/salesOrder/SalesOrderAssembler.java @@ -0,0 +1,228 @@ +package com.mhd.oms.interfaces.assembler.salesOrder; + +import cn.hutool.core.util.ObjectUtil; +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.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +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.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.settlement.repository.todo.SettlementDO; +import com.mhd.oms.interfaces.dto.deliveryInfo.DeliveryInfoDTO; +import com.mhd.oms.interfaces.dto.goods.GoodsDTO; +import com.mhd.oms.interfaces.dto.logistics.LogisticsDTO; +import com.mhd.oms.interfaces.dto.receiptInfo.ReceiptInfoDTO; +import com.mhd.oms.interfaces.dto.salesOrder.SalesOrderAddDTO; +import com.mhd.oms.interfaces.dto.salesOrder.SalesOrderAuditDTO; +import com.mhd.oms.interfaces.dto.salesOrder.SalesOrderDTO; +import com.mhd.oms.interfaces.dto.settlement.SettlementDTO; +import com.mhd.system.api.model.LoginUser; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 销售订单Assembler + * + * @author gen + * @date 2024-06-08 + */ +@Component +public class SalesOrderAssembler { + + /** + * 转换实体 + */ + public SalesOrderDO toDO(SalesOrderDTO salesOrderDTO) { + SalesOrderDO salesOrderDO = new SalesOrderDO(); + // 拷贝 + BeanUtils.copyProperties(salesOrderDTO, salesOrderDO, IgnoreNullUtil.getNullPropertyNames(salesOrderDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(salesOrderDTO.getId() != null){ + if(userId != null){ + salesOrderDO.setUpdateBy(userId); + }else { + salesOrderDO.setUpdateBy(new Long("0")); + } + salesOrderDO.setUpdateByName(userName); + salesOrderDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + salesOrderDO.setCreateBy(userId); + salesOrderDO.setUpdateBy(userId); + }else { + salesOrderDO.setCreateBy(new Long("0")); + salesOrderDO.setUpdateBy(new Long("0")); + } + salesOrderDO.setCreateByName(userName); + salesOrderDO.setUpdateByName(userName); + salesOrderDO.setCreateTime(new Date()); + salesOrderDO.setUpdateTime(new Date()); + salesOrderDO.setDelFlag(1); + } + return salesOrderDO; + } + + public SalesOrderAuditDO toAuditDO(SalesOrderAuditDTO salesOrderAuditDTO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + // 获取登陆人姓名 + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + + + SalesOrderAuditDO salesOrderAuditDO = new SalesOrderAuditDO(); + BeanUtils.copyProperties(salesOrderAuditDTO, salesOrderAuditDO, IgnoreNullUtil.getNullPropertyNames(salesOrderAuditDTO)); + salesOrderAuditDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + salesOrderAuditDO.setUpdateByName(userName); + salesOrderAuditDO.setUpdateTime(new Date()); + salesOrderAuditDO.setAuditBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + salesOrderAuditDO.setAuditTime(new Date()); + + return salesOrderAuditDO; + } + + public SalesOrderAddDO toOrderDo(SalesOrderAddDTO salesOrderAddDTO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + // 获取登陆人姓名 + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + + SalesOrderAddDO salesOrderAddDO = new SalesOrderAddDO(); + /**销售订单基本信息处理**/ + SalesOrderDO salesOrderDO = new SalesOrderDO(); + SalesOrderDTO salesOrderDTO = salesOrderAddDTO.getSalesOrderDTO(); + BeanUtils.copyProperties(salesOrderDTO, salesOrderDO, IgnoreNullUtil.getNullPropertyNames(salesOrderDTO)); + if (salesOrderDTO.getId() != null) { + salesOrderDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + salesOrderDO.setUpdateByName(userName); + salesOrderDO.setUpdateTime(new Date()); + salesOrderDO.setDelFlag(1); + } else { + salesOrderDO.setCreateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + salesOrderDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + salesOrderDO.setCreateByName(userName); + salesOrderDO.setUpdateByName(userName); + salesOrderDO.setCreateTime(new Date()); + salesOrderDO.setUpdateTime(new Date()); + salesOrderDO.setDelFlag(1); + } + salesOrderAddDO.setSalesOrderDO(salesOrderDO); + /**销售订单基本信息处理**/ + /**采购订单结算信息处理**/ + SettlementDO settlementDO = new SettlementDO(); + SettlementDTO settlementDTO = salesOrderAddDTO.getSettlementDTO(); + BeanUtils.copyProperties(settlementDTO, settlementDO, IgnoreNullUtil.getNullPropertyNames(settlementDTO)); + if (settlementDTO.getId() != null) { + settlementDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + settlementDO.setUpdateByName(userName); + settlementDO.setUpdateTime(new Date()); + } else { + settlementDO.setCreateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + settlementDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + settlementDO.setCreateByName(userName); + settlementDO.setUpdateByName(userName); + settlementDO.setCreateTime(new Date()); + settlementDO.setUpdateTime(new Date()); + settlementDO.setDelFlag(1); + } + salesOrderAddDO.setSettlementDO(settlementDO); + /**采购订单结算信息处理**/ + /**采购订单发货信息处理**/ + DeliveryInfoDO deliveryInfoDO = new DeliveryInfoDO(); + DeliveryInfoDTO deliveryInfoDTO = salesOrderAddDTO.getDeliveryInfoDTO(); + BeanUtils.copyProperties(deliveryInfoDTO, deliveryInfoDO, IgnoreNullUtil.getNullPropertyNames(deliveryInfoDTO)); + if (deliveryInfoDTO.getId() != null) { + deliveryInfoDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + deliveryInfoDO.setUpdateByName(userName); + deliveryInfoDO.setUpdateTime(new Date()); + } else { + deliveryInfoDO.setCreateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + deliveryInfoDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + deliveryInfoDO.setCreateByName(userName); + deliveryInfoDO.setUpdateByName(userName); + deliveryInfoDO.setCreateTime(new Date()); + deliveryInfoDO.setUpdateTime(new Date()); + deliveryInfoDO.setDelFlag(1); + } + salesOrderAddDO.setDeliveryInfoDO(deliveryInfoDO); + /**采购订单发货信息处理**/ + /**采购订单收货信息处理**/ + ReceiptInfoDO receiptInfoDO = new ReceiptInfoDO(); + ReceiptInfoDTO receiptInfoDTO = salesOrderAddDTO.getReceiptInfoDTO(); + BeanUtils.copyProperties(receiptInfoDTO, receiptInfoDO, IgnoreNullUtil.getNullPropertyNames(receiptInfoDTO)); + if (receiptInfoDTO.getId() != null) { + receiptInfoDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + receiptInfoDO.setUpdateByName(userName); + receiptInfoDO.setUpdateTime(new Date()); + } else { + receiptInfoDO.setCreateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + receiptInfoDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + receiptInfoDO.setCreateByName(userName); + receiptInfoDO.setUpdateByName(userName); + receiptInfoDO.setCreateTime(new Date()); + receiptInfoDO.setUpdateTime(new Date()); + receiptInfoDO.setDelFlag(1); + } + salesOrderAddDO.setReceiptInfoDO(receiptInfoDO); + /**采购订单收货信息处理**/ + /**采购订单物流信息处理**/ + LogisticsDO logisticsDO = new LogisticsDO(); + LogisticsDTO logisticsDTO = salesOrderAddDTO.getLogisticsDTO(); + BeanUtils.copyProperties(logisticsDTO, logisticsDO, IgnoreNullUtil.getNullPropertyNames(logisticsDTO)); + if (logisticsDTO.getId() != null) { + logisticsDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + logisticsDO.setUpdateByName(userName); + logisticsDO.setUpdateTime(new Date()); + } else { + logisticsDO.setCreateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + logisticsDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + logisticsDO.setCreateByName(userName); + logisticsDO.setUpdateByName(userName); + logisticsDO.setCreateTime(new Date()); + logisticsDO.setUpdateTime(new Date()); + logisticsDO.setDelFlag(1); + } + salesOrderAddDO.setLogisticsDO(logisticsDO); + /**采购订单物流信息处理**/ + /**采购订单物料信息处理**/ + List goodsDTOList = salesOrderAddDTO.getGoodsDTOList(); + List goodsDOList = goodsDTOList.stream().map(goodsDTO -> { + GoodsDO goodsDO = new GoodsDO(); + BeanUtils.copyProperties(goodsDTO, goodsDO, IgnoreNullUtil.getNullPropertyNames(goodsDTO)); + goodsDO.setCreateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + goodsDO.setUpdateBy(ObjectUtil.defaultIfNull(userId, new Long("0"))); + goodsDO.setCreateByName(userName); + goodsDO.setUpdateByName(userName); + goodsDO.setCreateTime(new Date()); + goodsDO.setUpdateTime(new Date()); + goodsDO.setDelFlag(1); + return goodsDO; + }).collect(Collectors.toList()); + salesOrderAddDO.setGoodsDOS(goodsDOList); + /**采购订单物料信息处理**/ + return salesOrderAddDO; + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/scmOrder/ScmOrderAssembler.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/scmOrder/ScmOrderAssembler.java new file mode 100644 index 000000000..1b68b013b --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/scmOrder/ScmOrderAssembler.java @@ -0,0 +1,107 @@ +package com.mhd.oms.interfaces.assembler.scmOrder; + +import cn.hutool.core.util.ObjectUtil; +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.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.oms.domain.scmOrder.repository.todo.ScmOrderDO; +import com.mhd.oms.domain.taskOrder.repository.todo.CreateTaskOrderDO; +import com.mhd.oms.interfaces.dto.scmOrder.ScmOrderDTO; +import com.mhd.oms.interfaces.dto.taskOrder.CreateTaskOrderDTO; +import com.mhd.system.api.model.LoginUser; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 供应链订单Assembler + * + * @author gen + * @date 2024-05-21 + */ +@Component +public class ScmOrderAssembler { + + /** + * 转换实体 + */ + public ScmOrderDO toDO(ScmOrderDTO scmOrderDTO) { + ScmOrderDO scmOrderDO = new ScmOrderDO(); + // 拷贝 + BeanUtils.copyProperties(scmOrderDTO, scmOrderDO, IgnoreNullUtil.getNullPropertyNames(scmOrderDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(scmOrderDTO.getId() != null){ + if(userId != null){ + scmOrderDO.setUpdateBy(userId); + }else { + scmOrderDO.setUpdateBy(new Long("0")); + } + scmOrderDO.setUpdateByName(userName); + scmOrderDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + scmOrderDO.setCreateBy(userId); + scmOrderDO.setUpdateBy(userId); + }else { + scmOrderDO.setCreateBy(new Long("0")); + scmOrderDO.setUpdateBy(new Long("0")); + } + scmOrderDO.setCreateByName(userName); + scmOrderDO.setUpdateByName(userName); + scmOrderDO.setCreateTime(new Date()); + scmOrderDO.setUpdateTime(new Date()); + scmOrderDO.setDelFlag(1); + } + return scmOrderDO; + } + + + + public CreateTaskOrderDO toCreateTaskOrderDO(CreateTaskOrderDTO createTaskOrderDTO) { + CreateTaskOrderDO createTaskOrderDO = new CreateTaskOrderDO(); + // 拷贝 + BeanUtils.copyProperties(createTaskOrderDTO, createTaskOrderDO, IgnoreNullUtil.getNullPropertyNames(createTaskOrderDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(createTaskOrderDTO.getId() != null){ + if(userId != null){ + createTaskOrderDO.setUpdateBy(userId); + }else { + createTaskOrderDO.setUpdateBy(new Long("0")); + } + createTaskOrderDO.setUpdateByName(userName); + createTaskOrderDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + createTaskOrderDO.setCreateBy(userId); + createTaskOrderDO.setUpdateBy(userId); + }else { + createTaskOrderDO.setCreateBy(new Long("0")); + createTaskOrderDO.setUpdateBy(new Long("0")); + } + createTaskOrderDO.setCreateByName(userName); + createTaskOrderDO.setUpdateByName(userName); + createTaskOrderDO.setCreateTime(new Date()); + createTaskOrderDO.setUpdateTime(new Date()); + createTaskOrderDO.setDelFlag(1); + } + createTaskOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + return createTaskOrderDO; + } + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/settlement/SettlementAssembler.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/settlement/SettlementAssembler.java new file mode 100644 index 000000000..fbd750ec8 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/settlement/SettlementAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.oms.interfaces.assembler.settlement; + +import cn.hutool.core.util.ObjectUtil; +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.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.oms.domain.settlement.repository.todo.SettlementDO; +import com.mhd.oms.interfaces.dto.settlement.SettlementDTO; +import com.mhd.system.api.model.LoginUser; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 结算信息Assembler + * + * @author gen + * @date 2024-05-16 + */ +@Component +public class SettlementAssembler { + + /** + * 转换实体 + */ + public SettlementDO toDO(SettlementDTO settlementDTO) { + SettlementDO settlementDO = new SettlementDO(); + // 拷贝 + BeanUtils.copyProperties(settlementDTO, settlementDO, IgnoreNullUtil.getNullPropertyNames(settlementDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(settlementDTO.getId() != null){ + if(userId != null){ + settlementDO.setUpdateBy(userId); + }else { + settlementDO.setUpdateBy(new Long("0")); + } + settlementDO.setUpdateByName(userName); + settlementDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + settlementDO.setCreateBy(userId); + settlementDO.setUpdateBy(userId); + }else { + settlementDO.setCreateBy(new Long("0")); + settlementDO.setUpdateBy(new Long("0")); + } + settlementDO.setCreateByName(userName); + settlementDO.setUpdateByName(userName); + settlementDO.setCreateTime(new Date()); + settlementDO.setUpdateTime(new Date()); + settlementDO.setDelFlag(1); + } + return settlementDO; + } + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/taskOrder/TaskOrderAssembler.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/taskOrder/TaskOrderAssembler.java new file mode 100644 index 000000000..7c018408b --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/assembler/taskOrder/TaskOrderAssembler.java @@ -0,0 +1,66 @@ +package com.mhd.oms.interfaces.assembler.taskOrder; + +import cn.hutool.core.util.ObjectUtil; +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.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.oms.domain.taskOrder.repository.todo.TaskOrderDO; +import com.mhd.oms.interfaces.dto.taskOrder.TaskOrderDTO; +import com.mhd.system.api.model.LoginUser; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 作业任务Assembler + * + * @author gen + * @date 2024-05-24 + */ +@Component +public class TaskOrderAssembler { + + /** + * 转换实体 + */ + public TaskOrderDO toDO(TaskOrderDTO taskOrderDTO) { + TaskOrderDO taskOrderDO = new TaskOrderDO(); + // 拷贝 + BeanUtils.copyProperties(taskOrderDTO, taskOrderDO, IgnoreNullUtil.getNullPropertyNames(taskOrderDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(taskOrderDTO.getId() != null){ + if(userId != null){ + taskOrderDO.setUpdateBy(userId); + }else { + taskOrderDO.setUpdateBy(new Long("0")); + } + taskOrderDO.setUpdateByName(userName); + taskOrderDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + taskOrderDO.setCreateBy(userId); + taskOrderDO.setUpdateBy(userId); + }else { + taskOrderDO.setCreateBy(new Long("0")); + taskOrderDO.setUpdateBy(new Long("0")); + } + taskOrderDO.setCreateByName(userName); + taskOrderDO.setUpdateByName(userName); + taskOrderDO.setCreateTime(new Date()); + taskOrderDO.setUpdateTime(new Date()); + taskOrderDO.setDelFlag(1); + } + return taskOrderDO; + } + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/common/IdsSetDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/common/IdsSetDTO.java new file mode 100644 index 000000000..075b425ce --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/common/IdsSetDTO.java @@ -0,0 +1,15 @@ +package com.mhd.oms.interfaces.dto.common; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +@Data +public class IdsSetDTO implements Serializable { + + @ApiModelProperty("ids,多个用英文逗号分割") + @NotNull(message = "传递的ID值缺失或为空") + private String ids; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/deliveryInfo/DeliveryInfoDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/deliveryInfo/DeliveryInfoDTO.java new file mode 100644 index 000000000..85c059f11 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/deliveryInfo/DeliveryInfoDTO.java @@ -0,0 +1,78 @@ +package com.mhd.oms.interfaces.dto.deliveryInfo; + +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 DeliveryInfoDTO 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 organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/goods/GoodsDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/goods/GoodsDTO.java new file mode 100644 index 000000000..803cb81c2 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/goods/GoodsDTO.java @@ -0,0 +1,114 @@ +package com.mhd.oms.interfaces.dto.goods; + +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 GoodsDTO 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("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("供应链订单ID") + private Long scmId; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/interceptOrder/InterceptOrderDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/interceptOrder/InterceptOrderDTO.java new file mode 100644 index 000000000..7aecb90c6 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/interceptOrder/InterceptOrderDTO.java @@ -0,0 +1,73 @@ +package com.mhd.oms.interfaces.dto.interceptOrder; + +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 InterceptOrderDTO 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(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/logistics/LogisticsDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/logistics/LogisticsDTO.java new file mode 100644 index 000000000..dafb5728a --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/logistics/LogisticsDTO.java @@ -0,0 +1,83 @@ +package com.mhd.oms.interfaces.dto.logistics; + +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 LogisticsDTO 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 organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/orderType/OrderTypeDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/orderType/OrderTypeDTO.java new file mode 100644 index 000000000..8205368ba --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/orderType/OrderTypeDTO.java @@ -0,0 +1,74 @@ +package com.mhd.oms.interfaces.dto.orderType; + +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 OrderTypeDTO 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 organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/purchaseOrder/PurchaseOrderAddDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/purchaseOrder/PurchaseOrderAddDTO.java new file mode 100644 index 000000000..694861ea9 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/purchaseOrder/PurchaseOrderAddDTO.java @@ -0,0 +1,43 @@ +package com.mhd.oms.interfaces.dto.purchaseOrder; + +import com.mhd.oms.interfaces.dto.deliveryInfo.DeliveryInfoDTO; +import com.mhd.oms.interfaces.dto.goods.GoodsDTO; +import com.mhd.oms.interfaces.dto.logistics.LogisticsDTO; +import com.mhd.oms.interfaces.dto.receiptInfo.ReceiptInfoDTO; +import com.mhd.oms.interfaces.dto.settlement.SettlementDTO; +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 PurchaseOrderAddDTO implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("基本信息") + private PurchaseOrderDTO purchaseOrderDTO; + + @ApiModelProperty("结算信息") + private SettlementDTO settlementDTO; + + @ApiModelProperty("发货信息") + private DeliveryInfoDTO deliveryInfoDTO; + + @ApiModelProperty("收货信息") + private ReceiptInfoDTO receiptInfoDTO; + + @ApiModelProperty("物流信息") + private LogisticsDTO logisticsDTO; + + @ApiModelProperty("物料信息") + private List goodsDTOList; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/purchaseOrder/PurchaseOrderAuditDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/purchaseOrder/PurchaseOrderAuditDTO.java new file mode 100644 index 000000000..9f54e7ad8 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/purchaseOrder/PurchaseOrderAuditDTO.java @@ -0,0 +1,40 @@ +package com.mhd.oms.interfaces.dto.purchaseOrder; + +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 PurchaseOrderAuditDTO 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; + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/purchaseOrder/PurchaseOrderDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/purchaseOrder/PurchaseOrderDTO.java new file mode 100644 index 000000000..55b03f645 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/purchaseOrder/PurchaseOrderDTO.java @@ -0,0 +1,185 @@ +package com.mhd.oms.interfaces.dto.purchaseOrder; + +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 PurchaseOrderDTO 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 BigDecimal totalPriceTax; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/purchaseOrder/PurchaseOrderExcelDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/purchaseOrder/PurchaseOrderExcelDTO.java new file mode 100644 index 000000000..69b99cf45 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/purchaseOrder/PurchaseOrderExcelDTO.java @@ -0,0 +1,243 @@ +package com.mhd.oms.interfaces.dto.purchaseOrder; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 采购订单管理对象 oms_purchase_order + * + * @author gen + * @date 2024-05-16 + */ + +@Data +public class PurchaseOrderExcelDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + /** ================= 采购订单信息 =================== */ + + @ExcelProperty(index = 0) + @ApiModelProperty("采购单号") + private String orderNo; + + @ExcelProperty(index = 1) + @ApiModelProperty("供应商") + private String supplier; + + @ExcelProperty(index = 2) + @ApiModelProperty("货主") + private String shipper; + + @ExcelIgnore + @ApiModelProperty("货主ID") + private String shipperId; + + @ExcelProperty(index = 3) + @ApiModelProperty("组织") + private String org; + + @ExcelProperty(index = 4) + @ApiModelProperty("订单日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date orderTime; + + @ExcelProperty(index = 5) + @ApiModelProperty("订单类型") + private String orderType; + + @ExcelProperty(index = 6) + @ApiModelProperty("收货仓库") + private String receivingWarehouse; + + @ExcelProperty(index = 7) + @ApiModelProperty("交货日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date deliveryDate; + + @ExcelProperty(index = 8) + @ApiModelProperty("客户订单号") + private String customerOrders; + + @ExcelProperty(index = 9) + @ApiModelProperty("合同号") + private String contractNo; + + @ExcelProperty(index = 10) + @ApiModelProperty("项目") + private String project; + + @ExcelProperty(index = 11) + @ApiModelProperty("备注") + private String remark; + + @ExcelProperty(index = 12) + @ApiModelProperty("优惠率") + private BigDecimal rateConcession; + + @ExcelProperty(index = 13) + @ApiModelProperty("优惠金额") + private BigDecimal discountAmount; + + @ExcelProperty(index = 14) + @ApiModelProperty("附件(地址)") + private String fileUrl; + + /** =================== 结算信息 ===================== */ + @ExcelProperty(index = 15) + @ApiModelProperty("结算对象") + private String settlementObj; + + @ExcelProperty(index = 16) + @ApiModelProperty("结算方式") + private String settlementWay; + + @ExcelProperty(index = 17) + @ApiModelProperty("支付状态") + private String payStatus; + + @ExcelProperty(index = 18) + @ApiModelProperty("实付金额;采购订单:本次付款") + private BigDecimal paidAmount; + + @ExcelProperty(index = 19) + @ApiModelProperty("付款账号") + private String paymentAccNo; + + @ExcelProperty(index = 20) + @ApiModelProperty("付款单号") + private String paymentOrderNo; + + @ExcelProperty(index = 21) + @ApiModelProperty("结算信息备注") + private String settlementRemark; + + @ExcelProperty(index = 22) + @ApiModelProperty("附件地址") + private String settlementFileUrl; + + /** ========================= 发货信息 ========================== */ + @ExcelProperty(index = 23) + @ApiModelProperty("发货人") + private String consigner; + + @ExcelProperty(index = 24) + @ApiModelProperty("发货人联系电话") + private String consignerPhone; + + @ExcelProperty(index = 25) + @ApiModelProperty("发货人所在区域") + private String consignerArea; + + @ExcelProperty(index = 26) + @ApiModelProperty("发货人详细地址") + private String consignerAddress; + + @ExcelProperty(index = 27) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("预计发货时间") + private Date estimatedDeliveryTime; + + /** ========================= 收货信息 ========================== */ + @ExcelProperty(index = 28) + @ApiModelProperty("收货人") + private String consignee; + + @ExcelProperty(index = 29) + @ApiModelProperty("收货人联系电话") + private String consigneePhone; + + @ExcelProperty(index = 30) + @ApiModelProperty("收货人所在区域") + private String consigneeArea; + + @ExcelProperty(index = 31) + @ApiModelProperty("收货人详细地址") + private String consigneeAddress; + + @ExcelProperty(index = 32) + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("预计到货时间") + private Date estimatedReceivingTime; + + /** ========================= 物流信息 ========================== */ + @ExcelProperty(index = 33) + @ApiModelProperty("运输方式") + private String shippingType; + + @ExcelProperty(index = 34) + @ApiModelProperty("承运商") + private String carrier; + + @ExcelProperty(index = 35) + @ApiModelProperty("物流单号") + private String trackingNum; + + @ExcelProperty(index = 36) + @ApiModelProperty("运费金额") + private BigDecimal freightAmount; + + @ExcelProperty(index = 37) + @ApiModelProperty("车牌号") + private String plateNum; + + @ExcelProperty(index = 38) + @ApiModelProperty("司机") + private String driverName; + + @ExcelProperty(index = 39) + @ApiModelProperty("联系电话") + private String driverPhone; + + /** ========================= 采购物料信息 ========================== */ + @ExcelProperty(index = 40) + @ApiModelProperty("物料名称") + private String goodsName; + + @ExcelProperty(index = 41) + @ApiModelProperty("辅助单位") + private String supportUnit; + + @ExcelProperty(index = 42) + @ApiModelProperty("辅助单位数量") + private Integer supportUnitQuantity; + + @ExcelProperty(index = 43) + @ApiModelProperty("物料单位EA") + private String materialUnitEa; + + @ExcelProperty(index = 44) + @ApiModelProperty("单价") + private BigDecimal unitPrice; + + @ExcelProperty(index = 45) + @ApiModelProperty("含税单价") + private BigDecimal taxUnitPrice; + + @ExcelProperty(index = 46) + @ApiModelProperty("金额") + private BigDecimal amount; + + @ExcelProperty(index = 47) + @ApiModelProperty("税率") + private BigDecimal taxRate; + + @ExcelProperty(index = 48) + @ApiModelProperty("含税金额/价税合计") + private BigDecimal taxAmount; + + @ExcelProperty(index = 49) + @ApiModelProperty("备注") + private String goodsRemark; + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/receiptInfo/ReceiptInfoDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/receiptInfo/ReceiptInfoDTO.java new file mode 100644 index 000000000..b94d2bd3a --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/receiptInfo/ReceiptInfoDTO.java @@ -0,0 +1,78 @@ +package com.mhd.oms.interfaces.dto.receiptInfo; + +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 ReceiptInfoDTO 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 organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/salesOrder/SalesOrderAddDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/salesOrder/SalesOrderAddDTO.java new file mode 100644 index 000000000..19fce08a0 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/salesOrder/SalesOrderAddDTO.java @@ -0,0 +1,43 @@ +package com.mhd.oms.interfaces.dto.salesOrder; + +import com.mhd.oms.interfaces.dto.deliveryInfo.DeliveryInfoDTO; +import com.mhd.oms.interfaces.dto.goods.GoodsDTO; +import com.mhd.oms.interfaces.dto.logistics.LogisticsDTO; +import com.mhd.oms.interfaces.dto.receiptInfo.ReceiptInfoDTO; +import com.mhd.oms.interfaces.dto.settlement.SettlementDTO; +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 SalesOrderAddDTO implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("基本信息") + private SalesOrderDTO salesOrderDTO; + + + @ApiModelProperty("结算信息") + private SettlementDTO settlementDTO; + + @ApiModelProperty("发货信息") + private DeliveryInfoDTO deliveryInfoDTO; + + @ApiModelProperty("收货信息") + private ReceiptInfoDTO receiptInfoDTO; + + @ApiModelProperty("物流信息") + private LogisticsDTO logisticsDTO; + + @ApiModelProperty("物料信息") + private List goodsDTOList; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/salesOrder/SalesOrderAuditDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/salesOrder/SalesOrderAuditDTO.java new file mode 100644 index 000000000..193ffcd2c --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/salesOrder/SalesOrderAuditDTO.java @@ -0,0 +1,42 @@ +package com.mhd.oms.interfaces.dto.salesOrder; + +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 SalesOrderAuditDTO 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; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/salesOrder/SalesOrderDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/salesOrder/SalesOrderDTO.java new file mode 100644 index 000000000..a363eeba2 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/salesOrder/SalesOrderDTO.java @@ -0,0 +1,193 @@ +package com.mhd.oms.interfaces.dto.salesOrder; + +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 SalesOrderDTO 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(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/salesOrder/SalesOrderExcelDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/salesOrder/SalesOrderExcelDTO.java new file mode 100644 index 000000000..dbec5fff2 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/salesOrder/SalesOrderExcelDTO.java @@ -0,0 +1,307 @@ +package com.mhd.oms.interfaces.dto.salesOrder; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 销售订单管理对象 oms_sales_order + * + * @author gen + * @date 2024-05-16 + */ + +@Data +public class SalesOrderExcelDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + /** ================= 采购订单信息 =================== */ + + @ExcelProperty(index = 0) + @ApiModelProperty("销售单号") + private String orderNo; + + @ExcelProperty(index = 1) + @ApiModelProperty("客户") + private String customer; + + @ExcelIgnore + @ApiModelProperty("客户ID") + private String customerId; + + @ExcelProperty(index = 2) + @ApiModelProperty("货主") + private String shipper; + + @ExcelIgnore + @ApiModelProperty("货主ID") + private String shipperId; + + @ExcelProperty(index = 3) + @ApiModelProperty("组织") + private String organizationName; + + @ExcelIgnore + @ApiModelProperty("组织id") + private String organizationId; + + @ExcelProperty(index = 4) + @ApiModelProperty("订单日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date orderTime; + + @ExcelProperty(index = 5) + @ApiModelProperty("订单类型") + private String orderType; + + @ExcelIgnore + @ApiModelProperty("订单类型id") + private Long orderTypeId; + + @ExcelProperty(index = 6) + @ApiModelProperty("发货仓库") + private String deliveryWarehouse; + + @ExcelIgnore + @ApiModelProperty("发货仓库ID") + private Long deliveryWarehouseId; + + @ExcelProperty(index = 7) + @ApiModelProperty("发货日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date deliveryDate; + + @ExcelProperty(index = 8) + @ApiModelProperty("客户订单号") + private String customerOrders; + + @ExcelProperty(index = 9) + @ApiModelProperty("合同号") + private String contractNo; + + @ExcelProperty(index = 10) + @ApiModelProperty("项目") + private String project; + + @ExcelIgnore + @ApiModelProperty("项目ID") + private Long projectId; + + @ExcelProperty(index = 11) + @ApiModelProperty("校验库存是否充足:0-不校验、1-校验") + private Long checkInventory; + + @ExcelProperty(index = 12) + @ApiModelProperty("优惠率") + private BigDecimal rateConcession; + + @ExcelProperty(index = 13) + @ApiModelProperty("优惠金额") + private BigDecimal discountAmount; + + @ExcelProperty(index = 14) + @ApiModelProperty("备注") + private String remark; + + @ExcelProperty(index = 15) + @ApiModelProperty("附件(地址)") + private String fileUrl; + + /** =================== 结算信息 ===================== */ + @ExcelProperty(index = 16) + @ApiModelProperty("结算对象") + private String settlementObj; + + @ExcelIgnore + @ApiModelProperty("结算对象ID") + private Long settlementObjId; + + @ExcelProperty(index = 17) + @ApiModelProperty("结算方式") + private String settlementWay; + + @ExcelIgnore + @ApiModelProperty("结算方式ID") + private Long settlementWayId; + + @ExcelProperty(index = 18) + @ApiModelProperty("支付状态") + private String payStatus; + + @ExcelIgnore + @ApiModelProperty("支付状态ID") + private Long payStatusId; + + @ExcelProperty(index = 19) + @ApiModelProperty("实付金额:销售订单-本次付款") + private BigDecimal paidAmount; + + @ExcelProperty(index = 20) + @ApiModelProperty("付款账号") + private String paymentAccNo; + + @ExcelProperty(index = 21) + @ApiModelProperty("付款单号") + private String paymentOrderNo; + + @ExcelProperty(index = 22) + @ApiModelProperty("结算信息备注") + private String settlementRemark; + + @ExcelProperty(index = 23) + @ApiModelProperty("附件地址") + private String settlementFileUrl; + + /** ========================= 发货信息 ========================== */ + @ExcelProperty(index = 24) + @ApiModelProperty("发货人") + private String consigner; + + @ExcelProperty(index = 25) + @ApiModelProperty("发货人联系电话") + private String consignerPhone; + + @ExcelProperty(index = 26) + @ApiModelProperty("发货人所在区域") + private String consignerArea; + + @ExcelProperty(index = 27) + @ApiModelProperty("发货人详细地址") + private String consignerAddress; + + @ExcelProperty(index = 28) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("预计发货时间") + private Date estimatedDeliveryTime; + + /** ========================= 收货信息 ========================== */ + @ExcelProperty(index = 29) + @ApiModelProperty("收货人") + private String consignee; + + @ExcelProperty(index = 30) + @ApiModelProperty("收货人联系电话") + private String consigneePhone; + + @ExcelProperty(index = 31) + @ApiModelProperty("收货人所在区域") + private String consigneeArea; + + @ExcelProperty(index = 32) + @ApiModelProperty("收货人详细地址") + private String consigneeAddress; + + @ExcelProperty(index = 33) + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("预计到货时间") + private Date estimatedReceivingTime; + + /** ========================= 物流信息 ========================== */ + @ExcelProperty(index = 34) + @ApiModelProperty("运输方式") + private String shippingType; + + @ExcelIgnore + @ApiModelProperty("运输方式ID") + private String shippingTypeId; + + @ExcelProperty(index = 35) + @ApiModelProperty("承运商") + private String carrier; + + @ExcelIgnore + @ApiModelProperty("承运商ID") + private Long carrierId; + + @ExcelProperty(index = 36) + @ApiModelProperty("物流单号") + private String trackingNum; + + @ExcelProperty(index = 37) + @ApiModelProperty("运费金额") + private BigDecimal freightAmount; + + @ExcelProperty(index = 38) + @ApiModelProperty("车牌号") + private String plateNum; + + @ExcelProperty(index = 39) + @ApiModelProperty("司机") + private String driverName; + + @ExcelProperty(index = 40) + @ApiModelProperty("联系电话") + private String driverPhone; + + /** ========================= 采购物料信息 ========================== */ + @ExcelProperty(index = 41) + @ApiModelProperty("物料名称") + private String goodsName; + + @ExcelProperty(index = 42) + @ApiModelProperty("物料编码") + private String goodsNo; + + @ExcelProperty(index = 43) + @ApiModelProperty("包装规格") + private String packingSize; + + @ExcelProperty(index = 44) + @ApiModelProperty("辅助单位") + private String supportUnit; + + @ExcelIgnore + @ApiModelProperty("辅助单位ID") + private Long supportUnitId; + + @ExcelProperty(index = 45) + @ApiModelProperty("辅助单位数量") + private Integer supportUnitQuantity; + + @ExcelProperty(index = 46) + @ApiModelProperty("物料单位EA") + private String materialUnitEa; + + @ExcelProperty(index = 47) + @ApiModelProperty("物料数量EA") + private String materialUnitEaQuantity; + + @ExcelProperty(index = 48) + @ApiModelProperty("单价") + private BigDecimal unitPrice; + + @ExcelProperty(index = 49) + @ApiModelProperty("含税单价") + private BigDecimal taxUnitPrice; + + @ExcelProperty(index = 50) + @ApiModelProperty("金额") + private BigDecimal amount; + + @ExcelProperty(index = 51) + @ApiModelProperty("税率") + private BigDecimal taxRate; + + @ExcelProperty(index = 52) + @ApiModelProperty("税金|税额") + private BigDecimal taxes; + + @ExcelProperty(index = 53) + @ApiModelProperty("含税金额/价税合计") + private BigDecimal taxAmount; + + @ExcelProperty(index = 54) + @ApiModelProperty("备注") + private String goodsRemark; + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/scmOrder/ScmOrderDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/scmOrder/ScmOrderDTO.java new file mode 100644 index 000000000..b1422c115 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/scmOrder/ScmOrderDTO.java @@ -0,0 +1,74 @@ +package com.mhd.oms.interfaces.dto.scmOrder; + +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 ScmOrderDTO 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(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/settlement/SettlementDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/settlement/SettlementDTO.java new file mode 100644 index 000000000..e607d1883 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/settlement/SettlementDTO.java @@ -0,0 +1,107 @@ +package com.mhd.oms.interfaces.dto.settlement; + +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 SettlementDTO 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(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/taskOrder/CreateTaskOrderDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/taskOrder/CreateTaskOrderDTO.java new file mode 100644 index 000000000..4bdefd27f --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/taskOrder/CreateTaskOrderDTO.java @@ -0,0 +1,53 @@ +package com.mhd.oms.interfaces.dto.taskOrder; + +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.util.List; + +/** + * 作业任务对象 oms_task_order + * + * @author gen + * @date 2024-05-24 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +public class CreateTaskOrderDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("供应链订单ID") + @NotNull(message = "供应链订单ID不能为空") + private Long scmId; + + @ApiModelProperty("下发仓库ID") + @NotNull(message = "下发仓库ID不能为空") + private Long warehouseId; + + @ApiModelProperty("商品信息") + @NotNull(message = "商品信息不能为空") + private List goodsInfoList; + + @ApiModelProperty("备注") + @Size(message = "备注不能超过个{max}个字符", max = 255) + private String remark; + + @NotNull(message = "生成作业任务方式不能为空") + @ApiModelProperty("生成作业任务方式:0-根据所填数量生成、1-全部生成") + private Integer createType; + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/taskOrder/CreateTaskOrderGoodsInfoDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/taskOrder/CreateTaskOrderGoodsInfoDTO.java new file mode 100644 index 000000000..550420457 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/taskOrder/CreateTaskOrderGoodsInfoDTO.java @@ -0,0 +1,28 @@ +package com.mhd.oms.interfaces.dto.taskOrder; + +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 +public class CreateTaskOrderGoodsInfoDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("计划任务数量(生成作业任务方式为根据所填数量生成时必填)") + private BigDecimal planNum; + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/taskOrder/PoMergeTaskDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/taskOrder/PoMergeTaskDTO.java new file mode 100644 index 000000000..1f7b07b84 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/taskOrder/PoMergeTaskDTO.java @@ -0,0 +1,36 @@ +package com.mhd.oms.interfaces.dto.taskOrder; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class PoMergeTaskDTO 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; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/taskOrder/TaskOrderDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/taskOrder/TaskOrderDTO.java new file mode 100644 index 000000000..1c7131663 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/taskOrder/TaskOrderDTO.java @@ -0,0 +1,45 @@ +package com.mhd.oms.interfaces.dto.taskOrder; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * 作业任务对象 oms_task_order + * + * @author gen + * @date 2024-05-24 + */ + +@EqualsAndHashCode(callSuper = true) +@Data +public class TaskOrderDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("供应链订单ID") + @Excel(name = "供应链订单ID") + private Long scmId; + @ApiModelProperty("供应链订单ID列表") + private List scmIdList; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("仓库ID") + private Long warehouseId; + + @ApiModelProperty("作业任务类型ID") + private Integer taskTypeId; + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/deliveryInfo/DeliveryInfoApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/deliveryInfo/DeliveryInfoApi.java new file mode 100644 index 000000000..6c560f909 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/deliveryInfo/DeliveryInfoApi.java @@ -0,0 +1,93 @@ +package com.mhd.oms.interfaces.facade.deliveryInfo; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.oms.application.service.deliveryInfo.DeliveryInfoApplicationService; +import com.mhd.oms.domain.deliveryInfo.repository.po.DeliveryInfoPO; +import com.mhd.oms.domain.deliveryInfo.repository.todo.DeliveryInfoDO; +import com.mhd.oms.interfaces.assembler.deliveryInfo.DeliveryInfoAssembler; +import com.mhd.oms.interfaces.dto.deliveryInfo.DeliveryInfoDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 发货信息Api + * + * @author gen + * @date 2024-05-16 + */ +@RestController +@RequestMapping("/deliveryInfoApi") +public class DeliveryInfoApi extends BaseController { + @Autowired + private DeliveryInfoApplicationService deliveryInfoApplicationService; + + @Resource + private DeliveryInfoAssembler deliveryInfoAssembler; + + /** + * 分页查询发货信息列表 + */ + @ApiOperation("查询发货信息列表") + @GetMapping("/list") + public TableDataInfo list(DeliveryInfoDTO deliveryInfoDTO) + { + //转换实体 + DeliveryInfoDO deliveryInfoDO = deliveryInfoAssembler.toDO(deliveryInfoDTO); + startPage(); + List list = deliveryInfoApplicationService.queryList(deliveryInfoDO); + return getDataTable(list); + } + + /** + * 编辑发货信息 + */ + @ApiOperation("编辑发货信息") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody DeliveryInfoDTO deliveryInfoDTO) + { + //转换实体 + DeliveryInfoDO deliveryInfoDO = deliveryInfoAssembler.toDO(deliveryInfoDTO); + if(deliveryInfoDTO.getId() != null){ + return toAjax(deliveryInfoApplicationService.update(deliveryInfoDO)); + }else { + return toAjax(deliveryInfoApplicationService.insert(deliveryInfoDO)); + } + } + + /** + * 批量删除发货信息 + */ + @ApiOperation("批量删除发货信息") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(deliveryInfoApplicationService.delete(ids)); + } + + /** + * 获取发货信息详细信息 + */ + @ApiOperation("获取发货信息") + @GetMapping(value = "/getInfo/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(deliveryInfoApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/goods/GoodsApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/goods/GoodsApi.java new file mode 100644 index 000000000..65882a7cf --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/goods/GoodsApi.java @@ -0,0 +1,103 @@ +package com.mhd.oms.interfaces.facade.goods; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.oms.application.service.goods.GoodsApplicationService; +import com.mhd.oms.domain.goods.repository.po.GoodsPO; +import com.mhd.oms.domain.goods.repository.todo.GoodsDO; +import com.mhd.oms.interfaces.assembler.goods.GoodsAssembler; +import com.mhd.oms.interfaces.dto.goods.GoodsDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商品信息Api + * + * @author gen + * @date 2024-05-16 + */ +@RestController +@RequestMapping("/goodsApi") +public class GoodsApi extends BaseController { + @Autowired + private GoodsApplicationService goodsApplicationService; + + @Resource + private GoodsAssembler goodsAssembler; + + /** + * 分页查询商品信息列表 + */ + @ApiOperation("查询商品信息列表") + @GetMapping("/list") + public TableDataInfo list(GoodsDTO goodsDTO) + { + //转换实体 + GoodsDO goodsDO = goodsAssembler.toDO(goodsDTO); + startPage(); + List list = goodsApplicationService.queryList(goodsDO); + return getDataTable(list); + } + + @ApiOperation("查询商品信息列表(不分页)") + @GetMapping("/noPageList") + public TableDataInfo noPageList(GoodsDTO goodsDTO) + { + //转换实体 + GoodsDO goodsDO = goodsAssembler.toDO(goodsDTO); + List list = goodsApplicationService.queryList(goodsDO); + return getDataTable(list); + } + + /** + * 编辑商品信息 + */ + @ApiOperation("编辑商品信息") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody GoodsDTO goodsDTO) + { + //转换实体 + GoodsDO goodsDO = goodsAssembler.toDO(goodsDTO); + if(goodsDTO.getId() != null){ + return toAjax(goodsApplicationService.update(goodsDO)); + }else { + return toAjax(goodsApplicationService.insert(goodsDO)); + } + } + + /** + * 批量删除商品信息 + */ + @ApiOperation("批量删除商品信息") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(goodsApplicationService.delete(ids)); + } + + /** + * 获取商品信息详细信息 + */ + @ApiOperation("获取商品信息") + @GetMapping(value = "/getInfo/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(goodsApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/interceptOrder/InterceptOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/interceptOrder/InterceptOrderApi.java new file mode 100644 index 000000000..dfc0f5a8e --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/interceptOrder/InterceptOrderApi.java @@ -0,0 +1,93 @@ +package com.mhd.oms.interfaces.facade.interceptOrder; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.oms.application.service.interceptOrder.InterceptOrderApplicationService; +import com.mhd.oms.domain.interceptOrder.repository.po.InterceptOrderPO; +import com.mhd.oms.domain.interceptOrder.repository.todo.InterceptOrderDO; +import com.mhd.oms.interfaces.assembler.interceptOrder.InterceptOrderAssembler; +import com.mhd.oms.interfaces.dto.interceptOrder.InterceptOrderDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 拦截订单Api + * + * @author gen + * @date 2024-05-30 + */ +@RestController +@RequestMapping("/interceptOrderApi") +public class InterceptOrderApi extends BaseController { + @Autowired + private InterceptOrderApplicationService interceptOrderApplicationService; + + @Resource + private InterceptOrderAssembler interceptOrderAssembler; + + /** + * 分页查询拦截订单列表 + */ + @ApiOperation("查询拦截订单列表") + @GetMapping("/list") + public TableDataInfo list(InterceptOrderDTO interceptOrderDTO) + { + //转换实体 + InterceptOrderDO interceptOrderDO = interceptOrderAssembler.toDO(interceptOrderDTO); + startPage(); + List list = interceptOrderApplicationService.queryList(interceptOrderDO); + return getDataTable(list); + } + + /** + * 编辑拦截订单 + */ + @ApiOperation("编辑拦截订单") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody InterceptOrderDTO interceptOrderDTO) + { + //转换实体 + InterceptOrderDO interceptOrderDO = interceptOrderAssembler.toDO(interceptOrderDTO); + if(interceptOrderDTO.getId() != null){ + return toAjax(interceptOrderApplicationService.update(interceptOrderDO)); + }else { + return toAjax(interceptOrderApplicationService.insert(interceptOrderDO)); + } + } + + /** + * 批量删除拦截订单 + */ + @ApiOperation("批量删除拦截订单") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(interceptOrderApplicationService.delete(ids)); + } + + /** + * 获取拦截订单详细信息 + */ + @ApiOperation("获取拦截订单") + @GetMapping(value = "/getInfo/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(interceptOrderApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/logistics/LogisticsApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/logistics/LogisticsApi.java new file mode 100644 index 000000000..0027fd3c5 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/logistics/LogisticsApi.java @@ -0,0 +1,93 @@ +package com.mhd.oms.interfaces.facade.logistics; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.oms.application.service.logistics.LogisticsApplicationService; +import com.mhd.oms.domain.logistics.repository.po.LogisticsPO; +import com.mhd.oms.domain.logistics.repository.todo.LogisticsDO; +import com.mhd.oms.interfaces.assembler.logistics.LogisticsAssembler; +import com.mhd.oms.interfaces.dto.logistics.LogisticsDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 物流信息Api + * + * @author gen + * @date 2024-05-16 + */ +@RestController +@RequestMapping("/logisticsApi") +public class LogisticsApi extends BaseController { + @Autowired + private LogisticsApplicationService logisticsApplicationService; + + @Resource + private LogisticsAssembler logisticsAssembler; + + /** + * 分页查询物流信息列表 + */ + @ApiOperation("查询物流信息列表") + @GetMapping("/list") + public TableDataInfo list(LogisticsDTO logisticsDTO) + { + //转换实体 + LogisticsDO logisticsDO = logisticsAssembler.toDO(logisticsDTO); + startPage(); + List list = logisticsApplicationService.queryList(logisticsDO); + return getDataTable(list); + } + + /** + * 编辑物流信息 + */ + @ApiOperation("编辑物流信息") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody LogisticsDTO logisticsDTO) + { + //转换实体 + LogisticsDO logisticsDO = logisticsAssembler.toDO(logisticsDTO); + if(logisticsDTO.getId() != null){ + return toAjax(logisticsApplicationService.update(logisticsDO)); + }else { + return toAjax(logisticsApplicationService.insert(logisticsDO)); + } + } + + /** + * 批量删除物流信息 + */ + @ApiOperation("批量删除物流信息") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(logisticsApplicationService.delete(ids)); + } + + /** + * 获取物流信息详细信息 + */ + @ApiOperation("获取物流信息") + @GetMapping(value = "/getInfo/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(logisticsApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/orderType/OrderTypeApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/orderType/OrderTypeApi.java new file mode 100644 index 000000000..c0a404464 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/orderType/OrderTypeApi.java @@ -0,0 +1,110 @@ +package com.mhd.oms.interfaces.facade.orderType; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.oms.application.service.orderType.OrderTypeApplicationService; +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.interfaces.assembler.orderType.OrderTypeAssembler; +import com.mhd.oms.interfaces.dto.orderType.OrderTypeDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 订单类型关系Api + * + * @author gen + * @date 2024-05-15 + */ +@RestController +@RequestMapping("/orderTypeApi") +public class OrderTypeApi extends BaseController { + @Autowired + private OrderTypeApplicationService orderTypeApplicationService; + + @Resource + private OrderTypeAssembler orderTypeAssembler; + + /** + * 分页查询订单类型关系列表 + */ + @ApiOperation("查询订单类型关系列表") + @GetMapping("/list") + public TableDataInfo> list(OrderTypeDTO orderTypeDTO) + { + //转换实体 + OrderTypeDO orderTypeDO = orderTypeAssembler.toDO(orderTypeDTO); + startPage(); + List list = orderTypeApplicationService.queryList(orderTypeDO); + return getDataTable(list); + } + + + + + /** + * 订单类型数据数据字典 + */ + @ApiOperation("订单类型数据数据字典") + @GetMapping("/listDict") + public AjaxResult listDict() + { + List list = orderTypeApplicationService.listDict(); + return AjaxResult.success(list); + } + + + + /** + * 编辑订单类型关系 + */ + @ApiOperation("编辑订单类型关系") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody OrderTypeDTO orderTypeDTO) + { + //转换实体 + OrderTypeDO orderTypeDO = orderTypeAssembler.toDO(orderTypeDTO); + if(orderTypeDTO.getId() != null){ + return toAjax(orderTypeApplicationService.update(orderTypeDO)); + }else { + return toAjax(orderTypeApplicationService.insert(orderTypeDO)); + } + } + + /** + * 批量删除订单类型关系 + */ + @ApiOperation("批量删除订单类型关系") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(orderTypeApplicationService.delete(ids)); + } + + /** + * 获取订单类型关系详细信息 + */ + @ApiOperation("获取订单类型关系") + @GetMapping(value = "/getInfo/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(orderTypeApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/purchaseOrder/PurchaseOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/purchaseOrder/PurchaseOrderApi.java new file mode 100644 index 000000000..b891e56ac --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/purchaseOrder/PurchaseOrderApi.java @@ -0,0 +1,198 @@ +package com.mhd.oms.interfaces.facade.purchaseOrder; + +import com.mhd.common.core.domain.entity.R; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.common.log.annotation.Log; +import com.mhd.common.log.enums.BusinessType; +import com.mhd.oms.application.service.purchaseOrder.PurchaseOrderApplicationService; +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.interfaces.assembler.purchaseOrder.PurchaseOrderAssembler; +import com.mhd.oms.interfaces.dto.purchaseOrder.PurchaseOrderAddDTO; +import com.mhd.oms.interfaces.dto.purchaseOrder.PurchaseOrderAuditDTO; +import com.mhd.oms.interfaces.dto.purchaseOrder.PurchaseOrderDTO; +import com.mhd.oms.interfaces.dto.purchaseOrder.PurchaseOrderExcelDTO; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 采购订单管理Api + * + * @author gen + * @date 2024-05-16 + */ +@Slf4j +@RestController +@RequestMapping("/purchaseOrderApi") +public class PurchaseOrderApi extends BaseController { + @Autowired + private PurchaseOrderApplicationService purchaseOrderApplicationService; + + @Resource + private PurchaseOrderAssembler purchaseOrderAssembler; + + /** + * 查询采购订单管理列表【订单池】 + */ + @ApiOperation("查询采购订单管理列表【订单池】") + @GetMapping("/orderPoolList") + public TableDataInfo orderPoolList(PurchaseOrderDTO purchaseOrderDTO) + { + //转换实体 + PurchaseOrderDO purchaseOrderDO = purchaseOrderAssembler.toDO(purchaseOrderDTO); + startPage(); + List list = purchaseOrderApplicationService.orderPoolList(purchaseOrderDO); + return getDataTable(list); + } + /** + * 分页查询采购订单管理列表 + */ + @ApiOperation("查询采购订单管理列表【订单管理】") + @GetMapping("/list") + public TableDataInfo list(PurchaseOrderDTO purchaseOrderDTO) + { + //转换实体 + PurchaseOrderDO purchaseOrderDO = purchaseOrderAssembler.toDO(purchaseOrderDTO); + startPage(); + List list = purchaseOrderApplicationService.queryList(purchaseOrderDO); + return getDataTable(list); + } + + + /** + * 编辑采购订单管理 + */ + @ApiOperation("编辑采购订单管理") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody PurchaseOrderAddDTO purchaseOrderAddDTO) + { + //转换实体 + PurchaseOrderAddDO purchaseOrderAddDO = purchaseOrderAssembler.toOrderDo(purchaseOrderAddDTO); + if(purchaseOrderAddDTO.getPurchaseOrderDTO().getId() != null){ + return toAjax(purchaseOrderApplicationService.update(purchaseOrderAddDO)); + + }else { + return toAjax(purchaseOrderApplicationService.insert(purchaseOrderAddDO)); + } + } + + /** + * 【采购订单】生成供应链订单 + */ + @ApiOperation("【采购订单】生成供应链订单") + @PostMapping("/createSco") + public AjaxResult createSco(@RequestBody List ids) + { + return toAjax(purchaseOrderApplicationService.createSco(ids)); + } + + /** + * 【采购订单】取消供应链订单 + */ + @ApiOperation("【采购订单】取消供应链订单") + @PostMapping("/cancelSco") + public AjaxResult cancelSco(@RequestBody List ids) + { + return toAjax(purchaseOrderApplicationService.cancelSco(ids)); + + } + + + + /** + * 批量删除采购订单管理 + */ + @ApiOperation("批量删除采购订单管理") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(purchaseOrderApplicationService.delete(ids)); + } + + /** + * 获取采购订单管理详细信息 + */ + @ApiOperation("获取采购订单管理") + @GetMapping(value = "/getInfo/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(purchaseOrderApplicationService.getInfo(id)); + } + + /** + * 采购订单审核 + */ + @ApiOperation("采购订单审核") + @PostMapping(value = "/audit") + public AjaxResult audit(@RequestBody PurchaseOrderAuditDTO purchaseOrderAuditDTO) + { + //转换实体 + PurchaseOrderAuditDO purchaseOrderAuditDO = purchaseOrderAssembler.toAuditDO(purchaseOrderAuditDTO); + return toAjax(purchaseOrderApplicationService.audit(purchaseOrderAuditDO)); + } + + /** + * 采购订单取消审核 + */ + @ApiOperation("采购订单取消审核") + @PostMapping(value = "/cancelAudit") + public AjaxResult cancelAudit(@RequestBody PurchaseOrderAuditDTO purchaseOrderAuditDTO) + { + //转换实体 + PurchaseOrderAuditDO purchaseOrderAuditDO = purchaseOrderAssembler.toAuditDO(purchaseOrderAuditDTO); + return toAjax(purchaseOrderApplicationService.cancelAudit(purchaseOrderAuditDO)); + } + + + /** + * 采购订单导入 + */ + @Log(title = "采购订单导入", description ="采购订单导入",businessType = BusinessType.IMPORT) + @ApiOperation("采购订单导入") + @PostMapping("/importPurchaseOrder") + public R importPurchaseOrder(@RequestBody List purchaseOrderExcelDtoList) + { + try { + purchaseOrderApplicationService.importPurOrderExcel(purchaseOrderExcelDtoList); + return R.ok(null,"导入成功!"); + } catch (ServiceException | DigitalLogisticsException ser) { + log.error("导入失败!",ser); + return R.fail("导入失败!" + ser.getMessage()); + } catch (Exception e) { + log.error("导入失败",e); + return R.fail("导入失败!"); + } + } + + + /** + * 拦截采购订单 + */ + @Log(title = "拦截采购订单", description ="拦截采购订单",businessType = BusinessType.IMPORT) + @ApiOperation("拦截采购订单") + @PostMapping("/interceptOrder") + public AjaxResult interceptOrder(@RequestBody List idList) + { + try { + purchaseOrderApplicationService.interceptOrder(idList); + return AjaxResult.success("操作成功!"); + } catch (ServiceException | DigitalLogisticsException ser) { + log.error("拦截失败!",ser); + return AjaxResult.error("拦截失败!" + ser.getMessage()); + } catch (Exception e) { + log.error("拦截失败",e); + return AjaxResult.error("拦截失败!"); + } + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/receiptInfo/ReceiptInfoApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/receiptInfo/ReceiptInfoApi.java new file mode 100644 index 000000000..dbd65bc01 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/receiptInfo/ReceiptInfoApi.java @@ -0,0 +1,93 @@ +package com.mhd.oms.interfaces.facade.receiptInfo; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.oms.application.service.receiptInfo.ReceiptInfoApplicationService; +import com.mhd.oms.domain.receiptInfo.repository.po.ReceiptInfoPO; +import com.mhd.oms.domain.receiptInfo.repository.todo.ReceiptInfoDO; +import com.mhd.oms.interfaces.assembler.receiptInfo.ReceiptInfoAssembler; +import com.mhd.oms.interfaces.dto.receiptInfo.ReceiptInfoDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 收货信息Api + * + * @author gen + * @date 2024-05-16 + */ +@RestController +@RequestMapping("/receiptInfoApi") +public class ReceiptInfoApi extends BaseController { + @Autowired + private ReceiptInfoApplicationService receiptInfoApplicationService; + + @Resource + private ReceiptInfoAssembler receiptInfoAssembler; + + /** + * 分页查询收货信息列表 + */ + @ApiOperation("查询收货信息列表") + @GetMapping("/list") + public TableDataInfo list(ReceiptInfoDTO receiptInfoDTO) + { + //转换实体 + ReceiptInfoDO receiptInfoDO = receiptInfoAssembler.toDO(receiptInfoDTO); + startPage(); + List list = receiptInfoApplicationService.queryList(receiptInfoDO); + return getDataTable(list); + } + + /** + * 编辑收货信息 + */ + @ApiOperation("编辑收货信息") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody ReceiptInfoDTO receiptInfoDTO) + { + //转换实体 + ReceiptInfoDO receiptInfoDO = receiptInfoAssembler.toDO(receiptInfoDTO); + if(receiptInfoDTO.getId() != null){ + return toAjax(receiptInfoApplicationService.update(receiptInfoDO)); + }else { + return toAjax(receiptInfoApplicationService.insert(receiptInfoDO)); + } + } + + /** + * 批量删除收货信息 + */ + @ApiOperation("批量删除收货信息") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(receiptInfoApplicationService.delete(ids)); + } + + /** + * 获取收货信息详细信息 + */ + @ApiOperation("获取收货信息") + @GetMapping(value = "/getInfo/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(receiptInfoApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/salesOrder/SalesOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/salesOrder/SalesOrderApi.java new file mode 100644 index 000000000..4393207ca --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/salesOrder/SalesOrderApi.java @@ -0,0 +1,187 @@ +package com.mhd.oms.interfaces.facade.salesOrder; + +import com.mhd.common.core.domain.entity.R; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.common.log.annotation.Log; +import com.mhd.common.log.enums.BusinessType; +import com.mhd.oms.application.service.salesOrder.SalesOrderApplicationService; +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.interfaces.assembler.salesOrder.SalesOrderAssembler; +import com.mhd.oms.interfaces.dto.salesOrder.SalesOrderAddDTO; +import com.mhd.oms.interfaces.dto.salesOrder.SalesOrderAuditDTO; +import com.mhd.oms.interfaces.dto.salesOrder.SalesOrderDTO; +import com.mhd.oms.interfaces.dto.salesOrder.SalesOrderExcelDTO; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 销售订单Api + * + * @author gen + * @date 2024-06-08 + */ +@Slf4j +@RestController +@RequestMapping("/salesOrderApi") +public class SalesOrderApi extends BaseController { + @Autowired + private SalesOrderApplicationService salesOrderApplicationService; + + @Resource + private SalesOrderAssembler salesOrderAssembler; + + /** + * 分页查询销售订单列表 + */ + @ApiOperation("查询销售订单列表【订单管理】") + @GetMapping("/list") + public TableDataInfo list(SalesOrderDTO salesOrderDTO) + { + //转换实体 + SalesOrderDO salesOrderDO = salesOrderAssembler.toDO(salesOrderDTO); + startPage(); + List list = salesOrderApplicationService.queryList(salesOrderDO); + return getDataTable(list); + } + @ApiOperation("查询销售订单列表【订单池】") + @GetMapping("/listPool") + public TableDataInfo listPool(SalesOrderDTO salesOrderDTO) + { + //转换实体 + SalesOrderDO salesOrderDO = salesOrderAssembler.toDO(salesOrderDTO); + startPage(); + List list = salesOrderApplicationService.listPool(salesOrderDO); + return getDataTable(list); + } + + /** + * 编辑销售订单 + */ + @ApiOperation("编辑销售订单") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody SalesOrderAddDTO salesOrderAddDTO) + { + //转换实体 + SalesOrderAddDO salesOrderAddDO = salesOrderAssembler.toOrderDo(salesOrderAddDTO); + if(salesOrderAddDO.getSalesOrderDO().getId() != null){ + return toAjax(salesOrderApplicationService.update(salesOrderAddDO)); + }else { + return toAjax(salesOrderApplicationService.insert(salesOrderAddDO)); + } + } + + /** + * 批量删除销售订单 + */ + @ApiOperation("批量删除销售订单") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(salesOrderApplicationService.delete(ids)); + } + + /** + * 获取销售订单详细信息 + */ + @ApiOperation("获取销售订单") + @GetMapping(value = "/getInfo") + public AjaxResult getInfo(@RequestParam("id") Long id) + { + return AjaxResult.success(salesOrderApplicationService.getetails(id)); + } + + /** + * 【销售订单】生成供应链订单 + */ + @ApiOperation("【销售订单】生成供应链订单") + @PostMapping("/createSco") + public AjaxResult createSco(@RequestBody List ids) + { + return toAjax(salesOrderApplicationService.createSco(ids)); + } + + /** + * 【销售订单】取消供应链订单 + */ + @ApiOperation("【销售订单】取消供应链订单") + @PostMapping("/cancelSco") + public AjaxResult cancelSco(@RequestBody List ids) + { + return toAjax(salesOrderApplicationService.cancelSco(ids)); + } + + + /** + * 销售订单审核 + */ + @ApiOperation("销售订单审核") + @PostMapping(value = "/audit") + public AjaxResult audit(@RequestBody SalesOrderAuditDTO salesOrderAuditDTO) + { + //转换实体 + SalesOrderAuditDO salesOrderAuditDO = salesOrderAssembler.toAuditDO(salesOrderAuditDTO); + return toAjax(salesOrderApplicationService.audit(salesOrderAuditDO)); + } + + /** + * 销售订单取消审核 + */ + @ApiOperation("销售订单取消审核") + @PostMapping(value = "/cancelAudit") + public AjaxResult cancelAudit(@RequestBody SalesOrderAuditDTO salesOrderAuditDTO) + { + //转换实体 + SalesOrderAuditDO salesOrderAuditDO = salesOrderAssembler.toAuditDO(salesOrderAuditDTO); + return toAjax(salesOrderApplicationService.cancelAudit(salesOrderAuditDO)); + } + + + /** + * 拦截销售订单 + */ + @Log(title = "拦截销售订单", description ="拦截销售订单",businessType = BusinessType.IMPORT) + @ApiOperation("拦截销售订单") + @PostMapping("/interceptOrder") + public AjaxResult interceptOrder(@RequestBody List idList) + { + + return toAjax(salesOrderApplicationService.interceptOrder(idList)); + + } + + /** + * 导入销售订单 + */ + @Log(title = "导入销售订单", description ="导入销售订单",businessType = BusinessType.IMPORT) + @ApiOperation("导入销售订单") + @PostMapping("/importSalesOrder") + public R importSalesOrder(@RequestBody List salesOrderExcelDtoList) + { + try { + salesOrderApplicationService.importSalesOrder(salesOrderExcelDtoList); + return R.ok(null,"导入成功!"); + } catch (ServiceException | DigitalLogisticsException ser) { + log.error("导入失败!",ser); + return R.fail("导入失败!" + ser.getMessage()); + } catch (Exception e) { + log.error("导入失败",e); + return R.fail("导入失败!"); + } + } + + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/scmOrder/ScmOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/scmOrder/ScmOrderApi.java new file mode 100644 index 000000000..a2d2bea01 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/scmOrder/ScmOrderApi.java @@ -0,0 +1,183 @@ +package com.mhd.oms.interfaces.facade.scmOrder; + +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.oms.application.service.scmOrder.ScmOrderApplicationService; +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.todo.CreateTaskOrderDO; +import com.mhd.oms.interfaces.assembler.scmOrder.ScmOrderAssembler; +import com.mhd.oms.interfaces.dto.scmOrder.ScmOrderDTO; +import com.mhd.oms.interfaces.dto.taskOrder.CreateTaskOrderDTO; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +/** + * 供应链订单Api + * + * @author gen + * @date 2024-05-21 + */ +@Slf4j +@RestController +@RequestMapping("/scmOrderApi") +public class ScmOrderApi extends BaseController { + @Autowired + private ScmOrderApplicationService scmOrderApplicationService; + + @Resource + private ScmOrderAssembler scmOrderAssembler; + + /** + * 分页查询供应链订单列表 + */ + @ApiOperation("查询供应链订单列表") + @GetMapping("/list") + public TableDataInfo list(ScmOrderDTO scmOrderDTO) + { + //转换实体 + ScmOrderDO scmOrderDO = scmOrderAssembler.toDO(scmOrderDTO); + startPage(); + List list = scmOrderApplicationService.queryList(scmOrderDO); + return getDataTable(list); + } + + /** + * 编辑供应链订单 + */ + @ApiOperation("编辑供应链订单") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody ScmOrderDTO scmOrderDTO) + { + //转换实体 + ScmOrderDO scmOrderDO = scmOrderAssembler.toDO(scmOrderDTO); + if(scmOrderDTO.getId() != null){ + return toAjax(scmOrderApplicationService.update(scmOrderDO)); + }else { + return toAjax(scmOrderApplicationService.insert(scmOrderDO)); + } + } + + /** + * 批量删除供应链订单 + */ + @ApiOperation("批量删除供应链订单") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(scmOrderApplicationService.delete(ids)); + } + + /** + * 获取供应链订单详细信息 + */ + @ApiOperation("获取供应链订单") + @GetMapping(value = "/getInfo/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(scmOrderApplicationService.getInfo(id)); + } + + + /** + * 生成作业任务 + */ + @ApiOperation("生成作业任务") + @PostMapping("/createTaskOrder") + public AjaxResult createTaskOrder(@RequestBody @Valid CreateTaskOrderDTO createTaskOrderDTO) + { + try{ + CreateTaskOrderDO createTaskOrderDO = scmOrderAssembler.toCreateTaskOrderDO(createTaskOrderDTO); + scmOrderApplicationService.createTaskOrder(createTaskOrderDO); + } + catch(ServiceException e){ + log.error("生成作业任务失败", e); + return AjaxResult.error("生成作业任务失败!" + e.getMessage()); + } + catch(Exception e){ + log.error("生成作业任务失败", e); + return AjaxResult.error("生成作业任务失败!"); + } + return AjaxResult.success("作业任务生成成功!"); + } + + /** + * 生成作业任务【批量】 + */ + @ApiOperation("生成作业任务【批量】") + @PostMapping("/batchCreateTaskOrder") + public AjaxResult batchCreateTaskOrder(@RequestBody List idList) + { + try{ + scmOrderApplicationService.batchCreateTaskOrder(idList); + } + catch(ServiceException e){ + log.error("生成作业任务失败", e); + return AjaxResult.error("生成作业任务失败!" + e.getMessage()); + } + catch(Exception e){ + log.error("生成作业任务失败", e); + return AjaxResult.error("生成作业任务失败!"); + } + return AjaxResult.success("作业任务生成成功!"); + } + + + + /** + * 订单审核【批量】 + */ + @ApiOperation("订单审核【批量】") + @PostMapping("/batchAudit") + public AjaxResult batchAudit(@RequestBody List idList) + { + try{ + scmOrderApplicationService.batchAudit(idList); + } + catch(ServiceException e){ + log.error("订单审核失败!", e); + return AjaxResult.error("订单审核失败!" + e.getMessage()); + } + catch(Exception e){ + log.error("订单审核失败!", e); + return AjaxResult.error("订单审核失败!"); + } + return AjaxResult.success("订单审核成功!"); + } + + + /** + * 订单取消审核【批量】 + */ + @ApiOperation("订单取消审核【批量】") + @PostMapping("/batchCancelAudit") + public AjaxResult batchCancelAudit(@RequestBody List idList) + { + try{ + scmOrderApplicationService.batchCancelAudit(idList); + } + catch(ServiceException e){ + log.error("订单取消审核失败!", e); + return AjaxResult.error("订单取消审核失败!" + e.getMessage()); + } + catch(Exception e){ + log.error("订单取消审核失败!", e); + return AjaxResult.error("订单取消审核失败!"); + } + return AjaxResult.success("订单取消审核成功!"); + } + + + + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/settlement/SettlementApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/settlement/SettlementApi.java new file mode 100644 index 000000000..487e1befb --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/settlement/SettlementApi.java @@ -0,0 +1,93 @@ +package com.mhd.oms.interfaces.facade.settlement; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.oms.application.service.settlement.SettlementApplicationService; +import com.mhd.oms.domain.settlement.repository.po.SettlementPO; +import com.mhd.oms.domain.settlement.repository.todo.SettlementDO; +import com.mhd.oms.interfaces.assembler.settlement.SettlementAssembler; +import com.mhd.oms.interfaces.dto.settlement.SettlementDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 结算信息Api + * + * @author gen + * @date 2024-05-16 + */ +@RestController +@RequestMapping("/settlementApi") +public class SettlementApi extends BaseController { + @Autowired + private SettlementApplicationService settlementApplicationService; + + @Resource + private SettlementAssembler settlementAssembler; + + /** + * 分页查询结算信息列表 + */ + @ApiOperation("查询结算信息列表") + @GetMapping("/list") + public TableDataInfo list(SettlementDTO settlementDTO) + { + //转换实体 + SettlementDO settlementDO = settlementAssembler.toDO(settlementDTO); + startPage(); + List list = settlementApplicationService.queryList(settlementDO); + return getDataTable(list); + } + + /** + * 编辑结算信息 + */ + @ApiOperation("编辑结算信息") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody SettlementDTO settlementDTO) + { + //转换实体 + SettlementDO settlementDO = settlementAssembler.toDO(settlementDTO); + if(settlementDTO.getId() != null){ + return toAjax(settlementApplicationService.update(settlementDO)); + }else { + return toAjax(settlementApplicationService.insert(settlementDO)); + } + } + + /** + * 批量删除结算信息 + */ + @ApiOperation("批量删除结算信息") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(settlementApplicationService.delete(ids)); + } + + /** + * 获取结算信息详细信息 + */ + @ApiOperation("获取结算信息") + @GetMapping(value = "/getInfo/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(settlementApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/taskOrder/TaskOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/taskOrder/TaskOrderApi.java new file mode 100644 index 000000000..a1f4e47a4 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/taskOrder/TaskOrderApi.java @@ -0,0 +1,168 @@ +package com.mhd.oms.interfaces.facade.taskOrder; + +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.oms.application.service.taskOrder.TaskOrderApplicationService; +import com.mhd.oms.domain.taskOrder.repository.po.TaskOrderPO; +import com.mhd.oms.domain.taskOrder.repository.todo.TaskOrderDO; +import com.mhd.oms.interfaces.assembler.taskOrder.TaskOrderAssembler; +import com.mhd.oms.interfaces.dto.taskOrder.PoMergeTaskDTO; +import com.mhd.oms.interfaces.dto.taskOrder.TaskOrderDTO; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 作业任务Api + * + * @author gen + * @date 2024-05-24 + */ +@Slf4j +@RestController +@RequestMapping("/taskOrderApi") +public class TaskOrderApi extends BaseController { + @Autowired + private TaskOrderApplicationService taskOrderApplicationService; + + @Resource + private TaskOrderAssembler taskOrderAssembler; + + /** + * 分页查询作业任务列表 + */ + @ApiOperation("查询作业任务列表") + @GetMapping("/list") + public TableDataInfo list(TaskOrderDTO taskOrderDTO) + { + //转换实体 + TaskOrderDO taskOrderDO = taskOrderAssembler.toDO(taskOrderDTO); + startPage(); + List list = taskOrderApplicationService.queryList(taskOrderDO); + return getDataTable(list); + } + + /** + * 编辑作业任务 + */ + @ApiOperation("编辑作业任务") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody TaskOrderDTO taskOrderDTO) + { + //转换实体 + TaskOrderDO taskOrderDO = taskOrderAssembler.toDO(taskOrderDTO); + if(taskOrderDTO.getId() != null){ + return toAjax(taskOrderApplicationService.update(taskOrderDO)); + }else { + return toAjax(taskOrderApplicationService.insert(taskOrderDO)); + } + } + + /** + * 批量删除作业任务 + */ + @ApiOperation("批量删除作业任务") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(taskOrderApplicationService.delete(ids)); + } + + /** + * 获取作业任务详细信息 + */ + @ApiOperation("获取作业任务") + @GetMapping(value = "/getInfo/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(taskOrderApplicationService.getInfo(id)); + } + + /** + * 下发任务 + */ + @ApiOperation("下发任务") + @PostMapping("/deliverTask") + public AjaxResult deliverTask(@RequestBody List ids) + { + return AjaxResult.success(taskOrderApplicationService.deliverTask(ids)); + } + + /** + * 完成任务 + */ + @ApiOperation("完成任务") + @PostMapping("/finishTask") + public AjaxResult finishTask(@RequestBody List ids) + { + return AjaxResult.success(taskOrderApplicationService.finishTask(ids)); + } + + + + /** + * 【采购订单】合并任务前置工作,点击合并任务弹出合并后的列表 + */ + @ApiOperation("【采购订单】合并任务前置工作,点击合并任务弹出合并后的列表") + @PostMapping("/poPreMergeTask") + public AjaxResult poPreMergeTask(@RequestBody List ids) + { + return AjaxResult.success(taskOrderApplicationService.poPreMergeTask(ids)); + } + + /** + * 【采购订单】合并任务 + */ + @ApiOperation("【采购订单】合并任务") + @PostMapping("/poMergeTask") + public AjaxResult poMergeTask(@RequestBody List poMergeTaskDTOS) + { + return AjaxResult.success(taskOrderApplicationService.poMergeTask(poMergeTaskDTOS)); + } + + /** + * 【采购订单】还原合并任务 + */ + @ApiOperation("【采购订单】还原合并任务") + @PostMapping("/restoreMergeTask") + public AjaxResult restoreMergeTask(@RequestBody List ids) + { + return AjaxResult.success(taskOrderApplicationService.restoreMergeTask(ids)); + } + + + + + /** + * 取消作业任务 + */ + @ApiOperation("取消作业任务") + @PostMapping("/cancelTaskOrder") + public AjaxResult cancelTaskOrder(@RequestBody List idList) + { + try{ + taskOrderApplicationService.cancelTaskOrder(idList); + } + catch(ServiceException e){ + log.error("取消作业任务失败", e); + return AjaxResult.error("取消作业任务失败!" + e.getMessage()); + } + catch(Exception e){ + log.error("取消作业任务失败", e); + return AjaxResult.error("取消作业任务失败!"); + } + return AjaxResult.success("取消作业任务成功!"); + } + + + + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/util/SetGroupUtil.java b/mhd_oms/src/main/java/com/mhd/oms/util/SetGroupUtil.java new file mode 100644 index 000000000..664fb31ca --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/util/SetGroupUtil.java @@ -0,0 +1,80 @@ +package com.mhd.oms.util; + +import com.mhd.oms.domain.taskOrder.repository.po.PoTaskDetailPO; + +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +public class SetGroupUtil{ + + public static void main(String[] args) { + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + // data list + List poTaskDetailPOS = new ArrayList<>(); + PoTaskDetailPO poTaskDetailPO1 = new PoTaskDetailPO(); + poTaskDetailPO1.setId(1L); + poTaskDetailPO1.setTaskNo("PO202405291113"); + poTaskDetailPO1.setWarehouseId(1002L); + poTaskDetailPO1.setWarehouseName("测试仓库2"); + poTaskDetailPO1.setShipperId(1001L); + poTaskDetailPO1.setShipper("测试货主1"); + PoTaskDetailPO poTaskDetailPO2 = new PoTaskDetailPO(); + poTaskDetailPO2.setId(1L); + poTaskDetailPO2.setTaskNo("PO202405291113"); + poTaskDetailPO2.setWarehouseId(1001L); + poTaskDetailPO2.setWarehouseName("测试仓库1"); + poTaskDetailPO2.setShipperId(1001L); + poTaskDetailPO2.setShipper("测试货主1"); + PoTaskDetailPO poTaskDetailPO3 = new PoTaskDetailPO(); + poTaskDetailPO3.setId(1L); + poTaskDetailPO3.setTaskNo("PO202405291113"); + poTaskDetailPO3.setWarehouseId(1001L); + poTaskDetailPO3.setWarehouseName("测试仓库1"); + poTaskDetailPO3.setShipperId(1001L); + poTaskDetailPO3.setShipper("测试货主1"); + poTaskDetailPOS.add(poTaskDetailPO1); + poTaskDetailPOS.add(poTaskDetailPO2); + poTaskDetailPOS.add(poTaskDetailPO3); + + + + // 进行分组,根据仓库和货主分组 + Map> groupMap = groupingBy(poTaskDetailPOS, PoTaskDetailPO::getWarehouseId, PoTaskDetailPO::getShipperId); + //打印分组结果 + groupMap.forEach((k, v) -> { + System.out.println(k); + System.out.println(v); + }); + } + /** + * 将数据分组,根据方法引用(bean的get方法) + * + * @param list 为分组的数据 + * @param functions get方法数组 + */ + @SafeVarargs + public static Map> groupingBy(List list, Function... functions) { + return list.stream().collect(Collectors.groupingBy(t -> groupingBy(t, functions))); + } + + /** + * 分组工具根据函数式接口使用分组,将数据根据分组结果进行拆分 + */ + @SafeVarargs + public static String groupingBy(T t, Function... functions) { + if (functions == null || functions.length == 0) { + throw new NullPointerException("functions数组不可以为空"); + } else if (functions.length == 1) { + return functions[0].apply(t).toString(); + } else { + return Arrays.stream(functions).map(fun -> fun.apply(t).toString()).reduce((str1, str2) -> str1 + "|" + str2).get(); + } + } +} + + diff --git a/mhd_oms/src/main/resources/bootstrap.yml b/mhd_oms/src/main/resources/bootstrap.yml new file mode 100644 index 000000000..8aa1783a7 --- /dev/null +++ b/mhd_oms/src/main/resources/bootstrap.yml @@ -0,0 +1,50 @@ +server: + port: 8017 +management: + metrics: + web: + server: + auto-time-requests: false # 关闭自动检测 +spring: + application: + name: mhd-oms-service + profiles: + active: + main: + allow-circular-references: true + # nacos配置 + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 + # 演示环境 + # server-addr: 47.92.229.169:8848 + # 测试开发环境 +# server-addr: 192.168.10.18:8848 + # Saas环境 + # server-addr: 8.130.64.92:8848 + # ip: 118.25.4.55 + # 大运通泰生产环境 +# server-addr: 39.107.137.158:8848 + # 线上测试环境 +# server-addr: 116.204.23.92:8848 + config: + # 配置中心地址 + server-addr: 127.0.0.1:8848 + # 演示环境 + # server-addr: 47.92.229.169:8848 + # 测试开发环境 +# server-addr: 192.168.10.18:8848 + # Saas环境 + # server-addr: 8.130.64.92:8848 + # 大运通泰生产环境 +# server-addr: 39.107.137.158:8848 + # 线上测试环境 +# server-addr: 116.204.23.92:8848 + # 锁定server端的配置文件(读取它的配置项) + namespace: # 命名空间id + group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置 + file-extension: yml #默认properties + + + diff --git a/mhd_oms/src/main/resources/mapper/deliveryInfo/DeliveryInfoMapper.xml b/mhd_oms/src/main/resources/mapper/deliveryInfo/DeliveryInfoMapper.xml new file mode 100644 index 000000000..f4a8b143b --- /dev/null +++ b/mhd_oms/src/main/resources/mapper/deliveryInfo/DeliveryInfoMapper.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_time, update_by, update_time, del_flag, top_organization_id, organization_id, organization_name, order_id, consigner, consigner_phone, consigner_area_code, consigner_area, consigner_address, saddress_lat_lon from oms_delivery_info + + + + + + and top_organization_id = #{topOrganizationId} + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and order_id = #{orderId} + + + and consigner = #{consigner} + + + and consigner_phone = #{consignerPhone} + + + and consigner_area_code = #{consignerAreaCode} + + + and consigner_area = #{consignerArea} + + + and consigner_address = #{consignerAddress} + + + and saddress_lat_lon = #{saddressLatLon} + + + + + + \ No newline at end of file diff --git a/mhd_oms/src/main/resources/mapper/goods/GoodsMapper.xml b/mhd_oms/src/main/resources/mapper/goods/GoodsMapper.xml new file mode 100644 index 000000000..c1c14ceb9 --- /dev/null +++ b/mhd_oms/src/main/resources/mapper/goods/GoodsMapper.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select + a.id, + a.goods_name, + a.goods_no, + a.packing_size, + a.support_unit_id, + a.support_unit, + a.support_unit_quantity, + a.material_unit_ea, + a.material_unit_ea_quantity, + a.create_by, + a.create_time, + a.update_by, + a.update_time, + a.top_organization_id, + a.organization_id, + a.organization_name, + a.del_flag, + a.order_id, + a.unit_price, + a.tax_unit_price, + a.tax_rate, + a.taxes, + a.amount, + a.tax_amount, + sum(case task.task_status when 2 then task.plan_num else 0 end) completeNum, -- 物料完成数量 + 1234567890 stockUsableNum, + a.remark + FROM + oms_goods a + left join oms_task_order task on a.id = task.goods_id and task.del_flag = 1 -- 作业任务(未删除) + left join oms_scm_order scm on a.order_id = scm.order_id and scm.del_flag = 1 -- 供应链订单(未删除) + + + + + a.del_flag = 1 + + and a.top_organization_id = #{topOrganizationId} + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.order_id = #{orderId} + + + and a.goods_no = #{goodsNo} + + + and a.goods_name like concat('%', #{goodsName}, '%') + + + and a.packing_size = #{packingSize} + + + and a.support_unit_id = #{supportUnitId} + + + and a.support_unit = #{supportUnit} + + + and a.material_unit_ea = #{materialUnitEa} + + + and a.unit_price = #{unitPrice} + + + and a.tax_unit_price = #{taxUnitPrice} + + + and a.tax_rate = #{taxRate} + + + and a.taxes = #{taxes} + + + and a.amount = #{amount} + + + and a.tax_amount = #{taxAmount} + + + and scm.id = #{scmId} + + + and a.id in + + #{id} + + + + + + + \ No newline at end of file diff --git a/mhd_oms/src/main/resources/mapper/interceptOrder/InterceptOrderMapper.xml b/mhd_oms/src/main/resources/mapper/interceptOrder/InterceptOrderMapper.xml new file mode 100644 index 000000000..8ade5b3ca --- /dev/null +++ b/mhd_oms/src/main/resources/mapper/interceptOrder/InterceptOrderMapper.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT + a.id, + a.create_by, + a.create_by_name, + a.create_time, + a.update_by, + a.update_by_name, + a.update_time, + a.top_organization_id, + a.organization_id, + a.organization_name, + a.del_flag, + a.order_id, + a.intercept_state, + a.intercept_by, + a.intercept_by_name, + a.intercept_time, + a.fail_cause, + a.task_nos, + b.customer_orders, + b.order_type, + b.job_task_type, + b.delivery_system + FROM + oms_intercept_order a + left join oms_purchase_order b on a.order_id = b.id + where a.del_flag = 1 + + + + + + + + + + + and a.top_organization_id = #{topOrganizationId} + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.order_id = #{orderId} + + + and a.intercept_state = #{interceptState} + + + and a.intercept_by = #{interceptBy} + + + and a.intercept_by_name like concat('%', #{interceptByName}, '%') + + + and a.intercept_time = #{interceptTime} + + + and a.fail_cause = #{failCause} + + + and a.task_nos = #{taskNos} + + + + + \ No newline at end of file diff --git a/mhd_oms/src/main/resources/mapper/logistics/LogisticsMapper.xml b/mhd_oms/src/main/resources/mapper/logistics/LogisticsMapper.xml new file mode 100644 index 000000000..059895b61 --- /dev/null +++ b/mhd_oms/src/main/resources/mapper/logistics/LogisticsMapper.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_time, update_by, update_time, del_flag, top_organization_id, organization_id, organization_name, order_id, shipping_type_id, shipping_type, carrier_id, carrier, tracking_num, freight_amount, plate_num, driver_name, driver_phone from oms_logistics + + + + + + and top_organization_id = #{topOrganizationId} + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and order_id = #{orderId} + + + and shipping_type_id = #{shippingTypeId} + + + and shipping_type = #{shippingType} + + + and carrier_id = #{carrierId} + + + and carrier = #{carrier} + + + and tracking_num = #{trackingNum} + + + and freight_amount = #{freightAmount} + + + and plate_num = #{plateNum} + + + and driver_name like concat('%', #{driverName}, '%') + + + and driver_phone = #{driverPhone} + + + + + + \ No newline at end of file diff --git a/mhd_oms/src/main/resources/mapper/orderType/OrderTypeMapper.xml b/mhd_oms/src/main/resources/mapper/orderType/OrderTypeMapper.xml new file mode 100644 index 000000000..aa8dfcc03 --- /dev/null +++ b/mhd_oms/src/main/resources/mapper/orderType/OrderTypeMapper.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by,create_by_name, create_time, update_by, update_by_name, update_time, del_flag, top_organization_id, organization_id, organization_name, business_order_type_id, business_order_type, job_task_type_id, job_task_type, delivery_system_id, delivery_system, order_type_id, order_type from oms_order_type + where del_flag = 1 + + + + + and top_organization_id = #{topOrganizationId} + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and business_order_type like concat('%', #{businessOrderType}, '%') + + + and job_task_type_id = #{jobTaskTypeId} + + + and delivery_system_id = #{deliverySystemId} + + + and order_type_id = #{orderTypeId} + + + + + + + \ No newline at end of file diff --git a/mhd_oms/src/main/resources/mapper/purchaseOrder/PurchaseOrderMapper.xml b/mhd_oms/src/main/resources/mapper/purchaseOrder/PurchaseOrderMapper.xml new file mode 100644 index 000000000..38b2087ab --- /dev/null +++ b/mhd_oms/src/main/resources/mapper/purchaseOrder/PurchaseOrderMapper.xml @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT + a.id, + a.create_by, + a.create_by_name, + a.create_time, + a.update_by, + a.update_by_name, + a.update_time, + a.del_flag, + a.top_organization_id, + a.organization_id, + a.organization_name, + a.audit_by, + a.audit_time, + a.audit_state, + a.audit_result, + a.order_no, + a.order_state, + a.supplier_id, + a.supplier, + a.shipper_id, + a.shipper, + a.org_id, + a.org, + a.order_time, + a.order_type_id, + a.order_type, + a.job_task_type_id, + a.job_task_type, + a.receiving_warehouse_id, + a.receiving_warehouse, + a.delivery_date, + a.customer_orders, + a.contract_no, + a.project_id, + a.project, + a.rate_concession, + a.discount_amount, + a.total_amount, + a.file_name, + a.file_url, + a.source, + a.tackl_state, + a.tackl_time, + a.remark, + a.total_price_tax, + a.material_info, + a.material_num, + a.in_storage_num, + b.settlement_obj, + b.settlement_way, + b.pay_status + FROM + oms_purchase_order a + LEFT JOIN oms_settlement b on a.id = b.order_id + WHERE + a.del_flag = 1 + + + + + + and a.top_organization_id = #{topOrganizationId} + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.audit_by = #{auditBy} + + + and a.audit_time = #{auditTime} + + + and a.audit_state = #{auditState} + + + and a.audit_result = #{auditResult} + + + and a.order_no = #{orderNo} + + + and a.order_state = #{orderState} + + + and a.supplier_id = #{supplierId} + + + and a.supplier = #{supplier} + + + and a.shipper_id = #{shipperId} + + + and a.shipper = #{shipper} + + + and a.org_id = #{orgId} + + + and a.org = #{org} + + + and a.order_time = #{orderTime} + + + and a.order_type_id = #{orderTypeId} + + + and a.order_type = #{orderType} + + + and a.job_task_type_id = #{jobTaskTypeId} + + + and a.job_task_type = #{jobTaskType} + + + and a.receiving_warehouse_id = #{receivingWarehouseId} + + + and a.receiving_warehouse = #{receivingWarehouse} + + + and a.delivery_date = #{deliveryDate} + + + and a.customer_orders = #{customerOrders} + + + and a.contract_no = #{contractNo} + + + and a.project_id = #{projectId} + + + and a.project = #{project} + + + and a.tackl_state = #{tacklState} + + + and a.tackl_time = #{tacklTime} + + + and a.source = #{source} + + + + + \ No newline at end of file diff --git a/mhd_oms/src/main/resources/mapper/receiptInfo/ReceiptInfoMapper.xml b/mhd_oms/src/main/resources/mapper/receiptInfo/ReceiptInfoMapper.xml new file mode 100644 index 000000000..fc59d8bcd --- /dev/null +++ b/mhd_oms/src/main/resources/mapper/receiptInfo/ReceiptInfoMapper.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_time, update_by, update_time, del_flag, top_organization_id, organization_id, organization_name, order_id, consignee, consignee_phone, consignee_area_code, consignee_area, consignee_address, raddress_lat_lon from oms_receipt_info + + + + + + and top_organization_id = #{topOrganizationId} + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and order_id = #{orderId} + + + and consignee = #{consignee} + + + and consignee_phone = #{consigneePhone} + + + and consignee_area_code = #{consigneeAreaCode} + + + and consignee_area = #{consigneeArea} + + + and consignee_address = #{consigneeAddress} + + + and raddress_lat_lon = #{raddressLatLon} + + + + + + \ No newline at end of file diff --git a/mhd_oms/src/main/resources/mapper/salesOrder/SalesOrderMapper.xml b/mhd_oms/src/main/resources/mapper/salesOrder/SalesOrderMapper.xml new file mode 100644 index 000000000..8c5612ec2 --- /dev/null +++ b/mhd_oms/src/main/resources/mapper/salesOrder/SalesOrderMapper.xml @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_by_name, create_time, update_by, update_by_name, update_time, del_flag, audit_by, audit_time, audit_state, audit_result, top_organization_id, organization_id, organization_name, order_no, order_state, sco_no, customer_id, customer, total_amount, tax_amount, in_storage_num, order_type_id, order_type, shipper_id, shipper, contract_no, project_id, project, tackl_state, tackl_time, source, org_id, org, order_time, delivery_warehouse_id, delivery_warehouse, delivery_date, customer_orders, check_inventory, rate_concession, discount_amount, file_url, remark from oms_sales_order + where del_flag = 1 + + + + + + + + + + + and audit_by = #{auditBy} + + + and audit_time = #{auditTime} + + + and audit_state = #{auditState} + + + and audit_result = #{auditResult} + + + and top_organization_id = #{topOrganizationId} + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and order_no = #{orderNo} + + + and order_state = #{orderState} + + + and sco_no = #{scoNo} + + + and customer_id = #{customerId} + + + and customer = #{customer} + + + and total_amount = #{totalAmount} + + + and tax_amount = #{taxAmount} + + + and in_storage_num = #{inStorageNum} + + + and order_type_id = #{orderTypeId} + + + and order_type = #{orderType} + + + and shipper_id = #{shipperId} + + + and shipper = #{shipper} + + + and contract_no = #{contractNo} + + + and project_id = #{projectId} + + + and project = #{project} + + + and tackl_state = #{tacklState} + + + and tackl_time = #{tacklTime} + + + and source = #{source} + + + and org_id = #{orgId} + + + and org = #{org} + + + and order_time = #{orderTime} + + + and delivery_warehouse_id = #{deliveryWarehouseId} + + + and delivery_warehouse = #{deliveryWarehouse} + + + and delivery_date = #{deliveryDate} + + + and customer_orders = #{customerOrders} + + + and check_inventory = #{checkInventory} + + + and rate_concession = #{rateConcession} + + + and discount_amount = #{discountAmount} + + + and file_url = #{fileUrl} + + + + + + + \ No newline at end of file diff --git a/mhd_oms/src/main/resources/mapper/scmOrder/ScmOrderMapper.xml b/mhd_oms/src/main/resources/mapper/scmOrder/ScmOrderMapper.xml new file mode 100644 index 000000000..f5fd00499 --- /dev/null +++ b/mhd_oms/src/main/resources/mapper/scmOrder/ScmOrderMapper.xml @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_by_name, create_time, update_by, update_by_name, update_time, del_flag, top_organization_id, organization_id, organization_name, scm_source, order_id, scm_no, order_state, task_num, active_task_num, finish_task_num, remark from oms_scm_order + where del_flag = 1 + + + + + and top_organization_id = #{topOrganizationId} + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and scm_source = #{scmSource} + + + and order_id = #{orderId} + + + and scm_no = #{scmNo} + + + and order_state = #{orderState} + + + and task_num = #{taskNum} + + + and active_task_num = #{activeTaskNum} + + + and finish_task_num = #{finishTaskNum} + + + and id in + + #{id} + + + + + + + + UPDATE oms_scm_order + set + order_state = #{orderState}, + update_by = #{userPo.userId}, + update_by_name = #{userPo.userName}, + update_time = now() + WHERE + del_flag = 1 + and id IN + + #{id} + + + + + \ No newline at end of file diff --git a/mhd_oms/src/main/resources/mapper/settlement/SettlementMapper.xml b/mhd_oms/src/main/resources/mapper/settlement/SettlementMapper.xml new file mode 100644 index 000000000..e0372b0ac --- /dev/null +++ b/mhd_oms/src/main/resources/mapper/settlement/SettlementMapper.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_time, update_by, update_time, top_organization_id, organization_id, organization_name, del_flag, order_id, settlement_obj_id, settlement_obj, settlement_way_id, settlement_way, pay_method, pay_status_id, pay_status, prepaid_amount, paid_amount, debt_amount, payment_acc_no, payment_order_no, file_url, remark from oms_settlement + + + + + + and top_organization_id = #{topOrganizationId} + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and order_id = #{orderId} + + + and settlement_obj_id = #{settlementObjId} + + + and settlement_obj = #{settlementObj} + + + and settlement_way_id = #{settlementWayId} + + + and settlement_way = #{settlementWay} + + + and pay_method = #{payMethod} + + + and pay_status_id = #{payStatusId} + + + and pay_status = #{payStatus} + + + and prepaid_amount = #{prepaidAmount} + + + and paid_amount = #{paidAmount} + + + and debt_amount = #{debtAmount} + + + and payment_acc_no = #{paymentAccNo} + + + and payment_order_no = #{paymentOrderNo} + + + and file_url = #{fileUrl} + + + + + + \ No newline at end of file diff --git a/mhd_oms/src/main/resources/mapper/taskOrder/TaskOrderMapper.xml b/mhd_oms/src/main/resources/mapper/taskOrder/TaskOrderMapper.xml new file mode 100644 index 000000000..5df4a0855 --- /dev/null +++ b/mhd_oms/src/main/resources/mapper/taskOrder/TaskOrderMapper.xml @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + select + a.id,a.create_by,a.create_by_name,a.create_time,a.update_by,a.update_by_name,a.update_time,a.del_flag,a.scm_id,a.task_no,a.task_status,a.order_id,a.merge_state,a.notice_code,a.enter_warehouse_code,a.warehouse_id,a.warehouse_name,a.plan_num,a.merge_task_no, + c.estimated_receiving_time, + case a.merge_state when 0 then '未合并' when 1 then '已合并' else '未知状态' end mergeStateStr, + case a.task_status when 0 then '未下发' when 1 then '已下发' when 2 then '已完成' when 3 then '已拦截' when 4 then '已取消' else '未知状态' end taskStatusStr + from + oms_task_order a + left join oms_receipt_info c on a.order_id = c.order_id and c.del_flag = 1 + + + + + a.del_flag = 1 + + + + + + + + and a.scm_id = #{scmId} + + + and a.task_status = #{taskStatus} + + + and a.task_type_id = #{taskTypeId} + + + and a.id in + + #{id} + + + + and a.scm_id in + + #{id} + + + + and a.order_id in + + #{id} + + + + + + + + + + + + + + + + + + + + + + + + a.del_flag = 1 + + and a.order_id in + + #{id} + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 0aa436c21..7cf7f5336 100644 --- a/pom.xml +++ b/pom.xml @@ -299,6 +299,7 @@ mhd_transport mhd_finance mhd_thrid_party + mhd_oms pom