新增库位绑定Feign接口与合并采购销售订单

This commit is contained in:
潘荣晟
2026-01-30 11:11:01 +08:00
parent de66bd6b12
commit 499da0a9b2
15 changed files with 209 additions and 26 deletions

View File

@@ -20,4 +20,6 @@ public interface ErrorCodeConstants {
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, "{}"); ErrorCode WAREHOUSE_CODE_OR_FACTORY_CODE_NOT_EXISTS = new ErrorCode(1_008_000_151, "{}");
ErrorCode ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_008_000_060, "订单明细不能为空");
} }

View File

@@ -153,7 +153,7 @@ public class PurchaseOrderSaveReqVO {
@Schema(description = "订单明细") @Schema(description = "订单明细")
@ExcelProperty("订单明细") @ExcelProperty("订单明细")
private List<PrchOrdDtlSaveReqVO> prchOrdDtlSaveReqVOS; private List<PrchOrdDtlSaveReqVO> details;
@Schema(description = "流程实例编号") @Schema(description = "流程实例编号")

View File

@@ -201,5 +201,8 @@ public class SalesOrderSaveReqVO {
@Schema(description = "货权转移类型(字典ASY_MTNG_TP)") @Schema(description = "货权转移类型(字典ASY_MTNG_TP)")
@ExcelProperty("货权转移类型(字典ASY_MTNG_TP)") @ExcelProperty("货权转移类型(字典ASY_MTNG_TP)")
private String meteringType; private String meteringType;
@Schema(description = "订单明细")
@ExcelProperty("订单明细")
private List<SalesOrderDetailSaveReqVO> details;
} }

View File

@@ -69,6 +69,13 @@ public interface PrchOrdDtlService {
* @return List<PrchOrdDtlRespVO> * @return List<PrchOrdDtlRespVO>
*/ */
List<PrchOrdDtlRespVO> batchCreatePrchOrdDtl(@Valid List<PrchOrdDtlSaveReqVO> createReqVOS); List<PrchOrdDtlRespVO> batchCreatePrchOrdDtl(@Valid List<PrchOrdDtlSaveReqVO> createReqVOS);
/**
* 批量更新采购订单明细
*
* @param createReqVOS 更新信息
* @return List<PrchOrdDtlRespVO>
*/
List<PrchOrdDtlRespVO> batchUpdatePrchOrdDtl(@Valid List<PrchOrdDtlSaveReqVO> createReqVOS);
/** /**
* 批量删除采购订单明细 * 批量删除采购订单明细
* *

View File

@@ -149,6 +149,14 @@ public class PrchOrdDtlServiceImpl implements PrchOrdDtlService {
return BeanUtils.toBean(prchOrdDtlDOS, PrchOrdDtlRespVO.class); return BeanUtils.toBean(prchOrdDtlDOS, PrchOrdDtlRespVO.class);
} }
@Override
public List<PrchOrdDtlRespVO> batchUpdatePrchOrdDtl(List<PrchOrdDtlSaveReqVO> createReqVOS) {
List<PrchOrdDtlDO> prchOrdDtlDOS = BeanUtils.toBean(createReqVOS, PrchOrdDtlDO.class);
prchOrdDtlMapper.insertOrUpdate(prchOrdDtlDOS);
log.info("批量更新采购订单明细成功,更新【{}】条数据", prchOrdDtlDOS.size());
return BeanUtils.toBean(prchOrdDtlDOS, PrchOrdDtlRespVO.class);
}
@Override @Override
public void deletePrchOrdDtlListByOrdIds(List<Long> ordIds) { public void deletePrchOrdDtlListByOrdIds(List<Long> ordIds) {
//通过订单组件查询订单明细 //通过订单组件查询订单明细

View File

@@ -115,14 +115,14 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
purchaseOrder.setSystemOrderNumber(orderNumber); purchaseOrder.setSystemOrderNumber(orderNumber);
purchaseOrderMapper.insert(purchaseOrder); purchaseOrderMapper.insert(purchaseOrder);
// if (createReqVO.getPrchOrdDtlSaveReqVOS()==null||createReqVO.getPrchOrdDtlSaveReqVOS().isEmpty()) { if (createReqVO.getDetails()==null||createReqVO.getDetails().isEmpty()) {
// return BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class); throw exception(ORDER_DETAIL_NOT_EXISTS);
// } }
// //批量插入订单明细 //批量插入订单明细
// createReqVO.getPrchOrdDtlSaveReqVOS().forEach(prchOrdDtlSaveReqVO -> prchOrdDtlSaveReqVO.setOrdId(purchaseOrder.getId())); createReqVO.getDetails().forEach(details -> details.setOrdId(purchaseOrder.getId()));
// List<PrchOrdDtlRespVO> prchOrdDtlRespVOS = prchOrdDtlService.batchCreatePrchOrdDtl(createReqVO.getPrchOrdDtlSaveReqVOS()); List<PrchOrdDtlRespVO> prchOrdDtlRespVOS = prchOrdDtlService.batchCreatePrchOrdDtl(createReqVO.getDetails());
// PurchaseOrderRespVO purchaseOrderRespVO = BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class); PurchaseOrderRespVO purchaseOrderRespVO = BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class);
// purchaseOrderRespVO.setPrchOrdDtlRespVOS(prchOrdDtlRespVOS); purchaseOrderRespVO.setPrchOrdDtlRespVOS(prchOrdDtlRespVOS);
return BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class); return BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class);
} }
@@ -134,22 +134,25 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
// 更新 // 更新
PurchaseOrderDO updateObj = BeanUtils.toBean(updateReqVO, PurchaseOrderDO.class); PurchaseOrderDO updateObj = BeanUtils.toBean(updateReqVO, PurchaseOrderDO.class);
purchaseOrderMapper.updateById(updateObj); purchaseOrderMapper.updateById(updateObj);
//删除订单明细 // 批量插入订单明细
// prchOrdDtlService.deletePrchOrdDtlListByOrdIds(Collections.singletonList(updateReqVO.getId())); updateReqVO.getDetails().forEach(prchOrdDtlSaveReqVO ->{
// log.info("删除旧的订单明细成功"); //表示新增
// 返回 if (prchOrdDtlSaveReqVO.getId() == null){
//批量插入订单明细 prchOrdDtlSaveReqVO.setOrdId(updateReqVO.getId());
// updateReqVO.getPrchOrdDtlSaveReqVOS().forEach(prchOrdDtlSaveReqVO -> prchOrdDtlSaveReqVO.setOrdId(updateReqVO.getId())); }
// prchOrdDtlService.batchCreatePrchOrdDtl(updateReqVO.getPrchOrdDtlSaveReqVOS()); });
prchOrdDtlService.batchUpdatePrchOrdDtl(updateReqVO.getDetails());
log.info("更新订单明细成功"); log.info("更新订单明细成功");
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void deletePurchaseOrder(Long id) { public void deletePurchaseOrder(Long id) {
// 校验存在 // 校验存在
validatePurchaseOrderExists(id); validatePurchaseOrderExists(id);
// 删除 // 删除
purchaseOrderMapper.deleteById(id); purchaseOrderMapper.deleteById(id);
prchOrdDtlService.deletePrchOrdDtlListByOrdIds(Collections.singletonList(id));
} }
@Override @Override

View File

@@ -40,7 +40,12 @@ public interface SalesOrderDetailService {
* @param updateReqVO 更新信息 * @param updateReqVO 更新信息
*/ */
void updateSalesOrderDetail(@Valid SalesOrderDetailSaveReqVO updateReqVO); void updateSalesOrderDetail(@Valid SalesOrderDetailSaveReqVO updateReqVO);
/**
* 批量更新销售订单明细
*
* @param updateReqVO 更新信息
*/
void updateSalesOrderDetailList(@Valid List<SalesOrderDetailSaveReqVO> updateReqVO);
/** /**
* 删除销售订单明细 * 删除销售订单明细
* *

View File

@@ -77,7 +77,7 @@ public class SalesOrderDetailServiceImpl implements SalesOrderDetailService {
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public List<SalesOrderDetailRespVO> createSalesOrderDetail(List<SalesOrderDetailSaveReqVO> createReqVOS) { public List<SalesOrderDetailRespVO> createSalesOrderDetail(List<SalesOrderDetailSaveReqVO> createReqVOS) {
List<SalesOrderDetailDO> salesOrderDetailDOS = BeanUtils.toBean(createReqVOS, SalesOrderDetailDO.class); List<SalesOrderDetailDO> salesOrderDetailDOS = BeanUtils.toBean(createReqVOS, SalesOrderDetailDO.class);
salesOrderDetailDOS.forEach(salesOrderDetail -> { salesOrderDetailDOS.forEach(salesOrderDetail -> {
@@ -96,6 +96,11 @@ public class SalesOrderDetailServiceImpl implements SalesOrderDetailService {
salesOrderDetailMapper.updateById(updateObj); salesOrderDetailMapper.updateById(updateObj);
} }
@Override
public void updateSalesOrderDetailList(List<SalesOrderDetailSaveReqVO> updateReqVO) {
salesOrderDetailMapper.insertOrUpdate(BeanUtils.toBean(updateReqVO, SalesOrderDetailDO.class));
}
@Override @Override
public void deleteSalesOrderDetail(Long id) { public void deleteSalesOrderDetail(Long id) {
// 校验存在 // 校验存在

View File

@@ -98,7 +98,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
private InternalWarehouseService internalWarehouseService; private InternalWarehouseService internalWarehouseService;
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public SalesOrderRespVO createSalesOrder(SalesOrderSaveReqVO createReqVO) { public SalesOrderRespVO createSalesOrder(SalesOrderSaveReqVO createReqVO) {
// 插入 // 插入
SalesOrderDO salesOrderDO = BeanUtils.toBean(createReqVO, SalesOrderDO.class); SalesOrderDO salesOrderDO = BeanUtils.toBean(createReqVO, SalesOrderDO.class);
@@ -108,22 +108,35 @@ public class SalesOrderServiceImpl implements SalesOrderService {
String orderNumber = generateOrderNumber(salesOrderDO.getMtrlTp()); String orderNumber = generateOrderNumber(salesOrderDO.getMtrlTp());
salesOrderDO.setSystemOrderNumber(orderNumber); salesOrderDO.setSystemOrderNumber(orderNumber);
salesOrderMapper.insert(salesOrderDO); salesOrderMapper.insert(salesOrderDO);
//插入订单明细
if (createReqVO.getDetails()==null||createReqVO.getDetails().isEmpty()) {
throw exception(Sales_ORD_DTL_NOT_EXISTS);
}
createReqVO.getDetails().forEach(details ->details.setOrderId(String.valueOf(salesOrderDO.getId())));
List<SalesOrderDetailRespVO> salesOrderDetail = salesOrderDetailService.createSalesOrderDetail(createReqVO.getDetails());
// 返回 // 返回
return BeanUtils.toBean(salesOrderDO, SalesOrderRespVO.class); SalesOrderRespVO bean = BeanUtils.toBean(salesOrderDO, SalesOrderRespVO.class);
bean.setSalesOrderDetailRespVOS(salesOrderDetail);
return bean;
} }
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public void updateSalesOrder(SalesOrderSaveReqVO updateReqVO) { public void updateSalesOrder(SalesOrderSaveReqVO updateReqVO) {
// 校验存在 // 校验存在
validateSalesOrderExists(updateReqVO.getId()); validateSalesOrderExists(updateReqVO.getId());
// 更新 // 更新
SalesOrderDO updateObj = BeanUtils.toBean(updateReqVO, SalesOrderDO.class); SalesOrderDO updateObj = BeanUtils.toBean(updateReqVO, SalesOrderDO.class);
salesOrderMapper.updateById(updateObj); salesOrderMapper.updateById(updateObj);
if (updateReqVO.getDetails()==null||updateReqVO.getDetails().isEmpty()) {
return;
}
updateReqVO.getDetails().forEach(details ->details.setOrderId(String.valueOf(updateObj.getId())));
salesOrderDetailService.updateSalesOrderDetailList(updateReqVO.getDetails());
} }
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public void deleteSalesOrder(Long id) { public void deleteSalesOrder(Long id) {
// 校验存在 // 校验存在
validateSalesOrderExists(id); validateSalesOrderExists(id);
@@ -132,7 +145,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
} }
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public void deleteSalesOrderListByIds(List<Long> ids) { public void deleteSalesOrderListByIds(List<Long> ids) {
// 校验存在 // 校验存在
validateSalesOrderExists(ids); validateSalesOrderExists(ids);

View File

@@ -0,0 +1,29 @@
package com.zt.plat.module.erp.api;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.module.erp.api.dto.internalWarehouse.InternalWarehouseDTO;
import com.zt.plat.module.erp.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@FeignClient(name = ApiConstants.NAME)
@Tag(name = "RPC 服务 - ERP")
public interface InternalWarehouseApi {
String PREFIX = ApiConstants.PREFIX + "/internal-warehouse";
/**
* 根据工厂代码和仓库代码获取仓库列表
*
* @param factoryCode 工厂代码
* @param warehouseCode 仓库代码
* @return 仓库列表
*/
@GetMapping(PREFIX + "/list-by-factory-code-and-warehouse-code")
@Operation(summary = "根据工厂代码和仓库代码获取仓库列表", description = "根据工厂代码和仓库代码获取仓库列表;factoryCode是工厂编码,warehouseCode是仓库编码,mmsiType是业务类型,operationType是操作类型")
CommonResult<List<InternalWarehouseDTO>> getInternalWarehouseListByFactoryCodeAndWarehouseCode(@RequestParam(value = "factoryCode") String factoryCode, @RequestParam(value = "warehouseCode") String warehouseCode, @RequestParam(value = "mmsiType", required = false) String mmsiType, @RequestParam(value = "operationType", required = false) String operationType);
}

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