销售提交erp
This commit is contained in:
@@ -0,0 +1,11 @@
|
|||||||
|
package com.zt.plat.module.contractorder.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ERP相关常量类
|
||||||
|
*/
|
||||||
|
public class ErpConstants {
|
||||||
|
public static final String PO_WAREHOUSE_TYPE = "into";
|
||||||
|
public static final String PO_WAREHOUSE_MMSITYPE = "PUR";
|
||||||
|
public static final String SALE_WAREHOUSE_TYPE = "out";
|
||||||
|
public static final String SALE_WAREHOUSE_MMSITYPE = "SALE";
|
||||||
|
}
|
||||||
@@ -19,4 +19,5 @@ public interface ErrorCodeConstants {
|
|||||||
ErrorCode Sales_ORD_DTL_NOT_EXISTS = new ErrorCode(1_008_001_040, "销售订单明细不存在");
|
ErrorCode Sales_ORD_DTL_NOT_EXISTS = new ErrorCode(1_008_001_040, "销售订单明细不存在");
|
||||||
ErrorCode ORDER_DONT_SUBMIT = new ErrorCode(1_008_000_050, "该订单不支持审批");
|
ErrorCode ORDER_DONT_SUBMIT = new ErrorCode(1_008_000_050, "该订单不支持审批");
|
||||||
ErrorCode MTRL_CODE_NOT_EXISTS = new ErrorCode(1_008_000_150, "中铜物料不存在");
|
ErrorCode MTRL_CODE_NOT_EXISTS = new ErrorCode(1_008_000_150, "中铜物料不存在");
|
||||||
|
ErrorCode WAREHOUSE_CODE_OR_FACTORY_CODE_NOT_EXISTS = new ErrorCode(1_008_000_151, "{}");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import com.zt.plat.module.base.api.materialinfomation.MaterialInfomationApi;
|
|||||||
import com.zt.plat.module.base.api.materialinfomation.dto.MaterialInfomationPageReqDTO;
|
import com.zt.plat.module.base.api.materialinfomation.dto.MaterialInfomationPageReqDTO;
|
||||||
import com.zt.plat.module.base.api.materialinfomation.dto.MaterialInfomationRespDTO;
|
import com.zt.plat.module.base.api.materialinfomation.dto.MaterialInfomationRespDTO;
|
||||||
import com.zt.plat.module.base.api.materialinfomation.dto.MaterialInfomationSimplePageReqDTO;
|
import com.zt.plat.module.base.api.materialinfomation.dto.MaterialInfomationSimplePageReqDTO;
|
||||||
|
import com.zt.plat.module.base.service.internalsupplyfactory.InternalSupplyFactoryService;
|
||||||
import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi;
|
import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi;
|
||||||
import com.zt.plat.module.bpm.api.task.BpmTaskApi;
|
import com.zt.plat.module.bpm.api.task.BpmTaskApi;
|
||||||
import com.zt.plat.module.bpm.api.task.dto.*;
|
import com.zt.plat.module.bpm.api.task.dto.*;
|
||||||
@@ -28,14 +29,18 @@ import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO;
|
|||||||
import com.zt.plat.module.contractorder.dal.mysql.contract.SystemRelativityMapper;
|
import com.zt.plat.module.contractorder.dal.mysql.contract.SystemRelativityMapper;
|
||||||
import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PrchOrdDtlMapper;
|
import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PrchOrdDtlMapper;
|
||||||
import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PurchaseOrderMapper;
|
import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PurchaseOrderMapper;
|
||||||
|
import com.zt.plat.module.contractorder.enums.ErpConstants;
|
||||||
import com.zt.plat.module.contractorder.enums.contract.DictEnum;
|
import com.zt.plat.module.contractorder.enums.contract.DictEnum;
|
||||||
import com.zt.plat.module.contractorder.enums.purchaseorder.OrderStatusEnum;
|
import com.zt.plat.module.contractorder.enums.purchaseorder.OrderStatusEnum;
|
||||||
import com.zt.plat.module.contractorder.service.contract.ContractService;
|
import com.zt.plat.module.contractorder.service.contract.ContractService;
|
||||||
import com.zt.plat.module.contractorder.util.constants.ProcessDefinitionKeyConstants;
|
import com.zt.plat.module.contractorder.util.constants.ProcessDefinitionKeyConstants;
|
||||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderSaveReqVO;
|
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderSaveReqVO;
|
||||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderUpdateReqVO;
|
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderUpdateReqVO;
|
||||||
|
import com.zt.plat.module.erp.controller.admin.erp.vo.WarehouseFactoryRespVO;
|
||||||
|
import com.zt.plat.module.erp.dal.dataobject.erp.internalwarehouse.InternalWarehouseDO;
|
||||||
import com.zt.plat.module.erp.service.erp.ErpOrderService;
|
import com.zt.plat.module.erp.service.erp.ErpOrderService;
|
||||||
import com.zt.plat.module.erp.service.erp.WarehouseFactoryService;
|
import com.zt.plat.module.erp.service.erp.WarehouseFactoryService;
|
||||||
|
import com.zt.plat.module.erp.service.erp.internalwarehouse.InternalWarehouseService;
|
||||||
import com.zt.plat.module.system.api.sequence.SequenceApi;
|
import com.zt.plat.module.system.api.sequence.SequenceApi;
|
||||||
import com.zt.plat.module.system.api.user.AdminUserApi;
|
import com.zt.plat.module.system.api.user.AdminUserApi;
|
||||||
import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO;
|
import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO;
|
||||||
@@ -95,6 +100,8 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private WarehouseFactoryService warehouseFactoryService;
|
private WarehouseFactoryService warehouseFactoryService;
|
||||||
|
@Resource
|
||||||
|
private InternalWarehouseService internalWarehouseService;
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public PurchaseOrderRespVO createPurchaseOrder(PurchaseOrderSaveReqVO createReqVO) {
|
public PurchaseOrderRespVO createPurchaseOrder(PurchaseOrderSaveReqVO createReqVO) {
|
||||||
@@ -312,12 +319,12 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
throw exception(MTRL_CODE_NOT_EXISTS);
|
throw exception(MTRL_CODE_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
//查询库位绑定编码
|
//查询库位绑定编码
|
||||||
|
WarehouseFactoryRespVO factoryAndWarehouse = getBoundFactoryAndWarehouse(detail.getRcvFactNum(), detail.getRcvWrhNum());
|
||||||
// 3.1 行项目基本信息
|
// 3.1 行项目基本信息
|
||||||
item.setPo_item(detail.getLineNum() != null ? detail.getLineNum().intValue() : null); // 行项目 -> 行号
|
item.setPo_item(detail.getLineNum() != null ? detail.getLineNum().intValue() : null); // 行项目 -> 行号
|
||||||
item.setMaterial(mtrlZhongtongCode); // 物料编码 -> 物料号
|
item.setMaterial(mtrlZhongtongCode); // 物料编码 -> 物料号
|
||||||
item.setPlant(detail.getRcvFactNum()); // 收货工厂编码 -> 工厂
|
item.setPlant(factoryAndWarehouse.getErpTargetFactoryNumber()); // 收货工厂编码 -> 工厂
|
||||||
item.setStge_loc(detail.getRcvWrhNum()); // 收货库位编码 -> 库存地点
|
item.setStge_loc(factoryAndWarehouse.getErpTargetWarehouseNumber()); // 收货库位编码 -> 库存地点
|
||||||
item.setQuantity(detail.getQty()); // 暂估数量 -> 数量
|
item.setQuantity(detail.getQty()); // 暂估数量 -> 数量
|
||||||
item.setPo_unit(detail.getUnt()); // 计量单位 -> 计量单位
|
item.setPo_unit(detail.getUnt()); // 计量单位 -> 计量单位
|
||||||
item.setNet_price(detail.getInTaxUprc()); // 含税单价 -> 含税单价
|
item.setNet_price(detail.getInTaxUprc()); // 含税单价 -> 含税单价
|
||||||
@@ -835,10 +842,6 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private String R(){
|
|
||||||
int number = (int) (Math.random() * 900000 + 100000);
|
|
||||||
return String.valueOf(number);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<PurchaseOrderDO> queryOrderAndPlanData(OrderAndPlanDataReqDTO reqDTO) {
|
public PageResult<PurchaseOrderDO> queryOrderAndPlanData(OrderAndPlanDataReqDTO reqDTO) {
|
||||||
@@ -859,4 +862,26 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
: allData.subList(startIndex, endIndex);
|
: allData.subList(startIndex, endIndex);
|
||||||
return new PageResult<>(pageData, (long) allData.size());
|
return new PageResult<>(pageData, (long) allData.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public WarehouseFactoryRespVO getBoundFactoryAndWarehouse(String factoryCode, String warehouseCode) {
|
||||||
|
// 1. 查询主库信息,空值直接抛异常(精准异常信息)
|
||||||
|
InternalWarehouseDO internalWarehouseDO = internalWarehouseService
|
||||||
|
.getInternalWarehouseByFactoryCodeAndWarehouseCode(factoryCode, warehouseCode);
|
||||||
|
if (internalWarehouseDO == null) {
|
||||||
|
throw exception(WAREHOUSE_CODE_OR_FACTORY_CODE_NOT_EXISTS,
|
||||||
|
"工厂编码:" + factoryCode + ",仓库编码:" + warehouseCode + " 不存在关联记录");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Stream流式查询+过滤,直接获取符合条件的唯一VO,空值抛异常
|
||||||
|
return warehouseFactoryService.getWarehouseFactoryByMainId(String.valueOf(internalWarehouseDO.getId()))
|
||||||
|
.stream()
|
||||||
|
// 过滤条件:MMSI类型+操作类型匹配ERP常量
|
||||||
|
.filter(vo -> ErpConstants.PO_WAREHOUSE_MMSITYPE.equals(vo.getMmsiType())
|
||||||
|
&& ErpConstants.PO_WAREHOUSE_TYPE.equals(vo.getOperationType()))
|
||||||
|
// 取第一个匹配结果(无结果则抛指定异常)
|
||||||
|
.findFirst()
|
||||||
|
.orElseThrow(() -> exception(WAREHOUSE_CODE_OR_FACTORY_CODE_NOT_EXISTS,
|
||||||
|
"工厂编码:" + factoryCode + ",仓库编码:" + warehouseCode + " 无符合操作条件的库位"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,12 +25,17 @@ import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrd
|
|||||||
import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO;
|
import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO;
|
||||||
import com.zt.plat.module.contractorder.dal.mysql.contract.SystemRelativityMapper;
|
import com.zt.plat.module.contractorder.dal.mysql.contract.SystemRelativityMapper;
|
||||||
import com.zt.plat.module.contractorder.dal.mysql.salesorder.SalesOrderMapper;
|
import com.zt.plat.module.contractorder.dal.mysql.salesorder.SalesOrderMapper;
|
||||||
|
import com.zt.plat.module.contractorder.enums.ErpConstants;
|
||||||
import com.zt.plat.module.contractorder.enums.contract.DictEnum;
|
import com.zt.plat.module.contractorder.enums.contract.DictEnum;
|
||||||
import com.zt.plat.module.contractorder.enums.purchaseorder.OrderStatusEnum;
|
import com.zt.plat.module.contractorder.enums.purchaseorder.OrderStatusEnum;
|
||||||
import com.zt.plat.module.contractorder.service.contract.ContractService;
|
import com.zt.plat.module.contractorder.service.contract.ContractService;
|
||||||
import com.zt.plat.module.contractorder.util.constants.ProcessDefinitionKeyConstants;
|
import com.zt.plat.module.contractorder.util.constants.ProcessDefinitionKeyConstants;
|
||||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpSalesOrderSaveReqVO;
|
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpSalesOrderSaveReqVO;
|
||||||
|
import com.zt.plat.module.erp.controller.admin.erp.vo.WarehouseFactoryRespVO;
|
||||||
|
import com.zt.plat.module.erp.dal.dataobject.erp.internalwarehouse.InternalWarehouseDO;
|
||||||
import com.zt.plat.module.erp.service.erp.ErpOrderService;
|
import com.zt.plat.module.erp.service.erp.ErpOrderService;
|
||||||
|
import com.zt.plat.module.erp.service.erp.WarehouseFactoryService;
|
||||||
|
import com.zt.plat.module.erp.service.erp.internalwarehouse.InternalWarehouseService;
|
||||||
import com.zt.plat.module.system.api.sequence.SequenceApi;
|
import com.zt.plat.module.system.api.sequence.SequenceApi;
|
||||||
import com.zt.plat.module.system.api.user.AdminUserApi;
|
import com.zt.plat.module.system.api.user.AdminUserApi;
|
||||||
import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO;
|
import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO;
|
||||||
@@ -87,7 +92,10 @@ public class SalesOrderServiceImpl implements SalesOrderService {
|
|||||||
@Resource
|
@Resource
|
||||||
private MaterialInfomationApi materialInfomationApi;
|
private MaterialInfomationApi materialInfomationApi;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WarehouseFactoryService warehouseFactoryService;
|
||||||
|
@Resource
|
||||||
|
private InternalWarehouseService internalWarehouseService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
@@ -225,11 +233,13 @@ public class SalesOrderServiceImpl implements SalesOrderService {
|
|||||||
if (mtrlZhongtongCode.isEmpty()){
|
if (mtrlZhongtongCode.isEmpty()){
|
||||||
throw exception(MTRL_CODE_NOT_EXISTS);
|
throw exception(MTRL_CODE_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
|
//查询对应的库位和工厂
|
||||||
|
WarehouseFactoryRespVO boundFactoryAndWarehouse = getBoundFactoryAndWarehouse(salesOrderDetailRespVO.getFactoryNumber(), salesOrderDetailRespVO.getWarehouseNumber());
|
||||||
ErpSalesOrderSaveReqVO.Item item = new ErpSalesOrderSaveReqVO.Item();
|
ErpSalesOrderSaveReqVO.Item item = new ErpSalesOrderSaveReqVO.Item();
|
||||||
item.setItem_categ(String.valueOf(salesOrderDetailRespVO.getLineNumber()));
|
item.setItem_categ(String.valueOf(salesOrderDetailRespVO.getLineNumber()));
|
||||||
item.setMaterial(mtrlZhongtongCode);
|
item.setMaterial(mtrlZhongtongCode);
|
||||||
item.setPlant(salesOrderDetailRespVO.getFactoryNumber());
|
item.setPlant(boundFactoryAndWarehouse.getErpTargetFactoryNumber());
|
||||||
item.setStore_loc(salesOrderDetailRespVO.getShippingPlace());
|
item.setStore_loc(boundFactoryAndWarehouse.getErpTargetWarehouseNumber());
|
||||||
item.setSales_unit(salesOrderDetailRespVO.getUnit());
|
item.setSales_unit(salesOrderDetailRespVO.getUnit());
|
||||||
item.setDlvschduse(salesOrderDetailRespVO.getInvoiceType());
|
item.setDlvschduse(salesOrderDetailRespVO.getInvoiceType());
|
||||||
item.setTarget_qty(salesOrderDetailRespVO.getQuantity());
|
item.setTarget_qty(salesOrderDetailRespVO.getQuantity());
|
||||||
@@ -588,4 +598,26 @@ public class SalesOrderServiceImpl implements SalesOrderService {
|
|||||||
public SalesOrderDO getSalesOrderByOrderNo(String orderNo) {
|
public SalesOrderDO getSalesOrderByOrderNo(String orderNo) {
|
||||||
return salesOrderMapper.selectOne(SalesOrderDO::getSystemOrderNumber, orderNo);
|
return salesOrderMapper.selectOne(SalesOrderDO::getSystemOrderNumber, orderNo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public WarehouseFactoryRespVO getBoundFactoryAndWarehouse(String factoryCode, String warehouseCode) {
|
||||||
|
// 1. 查询主库信息,空值直接抛异常(精准异常信息)
|
||||||
|
InternalWarehouseDO internalWarehouseDO = internalWarehouseService
|
||||||
|
.getInternalWarehouseByFactoryCodeAndWarehouseCode(factoryCode, warehouseCode);
|
||||||
|
if (internalWarehouseDO == null) {
|
||||||
|
throw exception(WAREHOUSE_CODE_OR_FACTORY_CODE_NOT_EXISTS,
|
||||||
|
"工厂编码:" + factoryCode + ",仓库编码:" + warehouseCode + " 不存在关联记录");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Stream流式查询+过滤,直接获取符合条件的唯一VO,空值抛异常
|
||||||
|
return warehouseFactoryService.getWarehouseFactoryByMainId(String.valueOf(internalWarehouseDO.getId()))
|
||||||
|
.stream()
|
||||||
|
// 过滤条件:MMSI类型+操作类型匹配ERP常量
|
||||||
|
.filter(vo -> ErpConstants.SALE_WAREHOUSE_MMSITYPE.equals(vo.getMmsiType())
|
||||||
|
&& ErpConstants.SALE_WAREHOUSE_TYPE.equals(vo.getOperationType()))
|
||||||
|
// 取第一个匹配结果(无结果则抛指定异常)
|
||||||
|
.findFirst()
|
||||||
|
.orElseThrow(() -> exception(WAREHOUSE_CODE_OR_FACTORY_CODE_NOT_EXISTS,
|
||||||
|
"工厂编码:" + factoryCode + ",仓库编码:" + warehouseCode + " 无符合操作条件的库位"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import jakarta.annotation.Resource;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
@@ -90,7 +91,14 @@ public class WarehouseFactoryServiceImpl implements WarehouseFactoryService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<WarehouseFactoryRespVO> getWarehouseFactoryByMainId(String mainId) {
|
public List<WarehouseFactoryRespVO> getWarehouseFactoryByMainId(String mainId) {
|
||||||
return BeanUtils.toBean(warehouseFactoryMapper.selectList(WarehouseFactoryDO::getMainWarehouseId, mainId), WarehouseFactoryRespVO.class);
|
List<WarehouseFactoryDO> warehouseFactoryDOS = warehouseFactoryMapper.selectList(WarehouseFactoryDO::getMainWarehouseId, mainId);
|
||||||
|
List<WarehouseFactoryRespVO> warehouseFactoryRespVOS=new ArrayList<>();
|
||||||
|
for (WarehouseFactoryDO warehouseFactoryDO : warehouseFactoryDOS) {
|
||||||
|
WarehouseFactoryRespVO bean = BeanUtils.toBean(warehouseFactoryDO, WarehouseFactoryRespVO.class);
|
||||||
|
bean.setMmsiType(warehouseFactoryDO.getMmsiType());
|
||||||
|
warehouseFactoryRespVOS.add(bean);
|
||||||
|
}
|
||||||
|
return warehouseFactoryRespVOS;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -64,4 +64,7 @@ public interface InternalWarehouseService {
|
|||||||
PageResult<InternalWarehouseDO> getInternalWarehousePage(InternalWarehousePageReqVO pageReqVO);
|
PageResult<InternalWarehouseDO> getInternalWarehousePage(InternalWarehousePageReqVO pageReqVO);
|
||||||
|
|
||||||
void enableDisable(List<InternalWarehouseEnableDisableReqVO> reqVOS);
|
void enableDisable(List<InternalWarehouseEnableDisableReqVO> reqVOS);
|
||||||
|
//通过工厂编码查询库位
|
||||||
|
InternalWarehouseDO getInternalWarehouseByFactoryCodeAndWarehouseCode(String factoryCode, String warehouseCode);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -126,4 +126,14 @@ public class InternalWarehouseServiceImpl implements InternalWarehouseService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public InternalWarehouseDO getInternalWarehouseByFactoryCodeAndWarehouseCode(String factoryCode, String warehouseCode) {
|
||||||
|
return internalWarehouseMapper.selectOne(
|
||||||
|
new LambdaQueryWrapperX<InternalWarehouseDO>()
|
||||||
|
.eq(InternalWarehouseDO::getFactoryNumber, factoryCode)
|
||||||
|
.eq(InternalWarehouseDO::getNumber, warehouseCode)
|
||||||
|
.eq(InternalWarehouseDO::getIsEnable, '1')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user