package cn.iocoder.yudao.module.erp.api.sale;
|
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderCreateReqDTO;
|
import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderItemRespDTO;
|
import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderRespDTO;
|
import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderSaveReqVO;
|
import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderDO;
|
import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleOrderItemDO;
|
import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderItemMapper;
|
import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOrderMapper;
|
import cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderService;
|
import jakarta.annotation.Resource;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.math.BigDecimal;
|
import java.util.Collections;
|
import java.util.List;
|
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
|
/**
|
* ERP 销售订单 API 实现类
|
*
|
* @author 芋道源码
|
*/
|
@RestController
|
@RequestMapping(ErpSaleOrderApi.PREFIX)
|
@Validated
|
public class ErpSaleOrderApiImpl implements ErpSaleOrderApi {
|
|
@Resource
|
private ErpSaleOrderService saleOrderService;
|
|
@Resource
|
private ErpSaleOrderMapper saleOrderMapper;
|
|
@Resource
|
private ErpSaleOrderItemMapper saleOrderItemMapper;
|
|
@Override
|
public CommonResult<Long> createSaleOrder(ErpSaleOrderCreateReqDTO createReqDTO) {
|
// 转换为 SaveReqVO
|
ErpSaleOrderSaveReqVO saveReqVO = BeanUtils.toBean(createReqDTO, ErpSaleOrderSaveReqVO.class);
|
// 转换订单项
|
if (createReqDTO.getItems() != null) {
|
saveReqVO.setItems(createReqDTO.getItems().stream()
|
.map(item -> BeanUtils.toBean(item, ErpSaleOrderSaveReqVO.Item.class))
|
.toList());
|
}
|
return success(saleOrderService.createSaleOrder(saveReqVO));
|
}
|
|
@Override
|
public CommonResult<ErpSaleOrderRespDTO> getSaleOrder(Long id) {
|
ErpSaleOrderDO order = saleOrderService.getSaleOrder(id);
|
return success(BeanUtils.toBean(order, ErpSaleOrderRespDTO.class));
|
}
|
|
@Override
|
public CommonResult<ErpSaleOrderRespDTO> getSaleOrderByContractId(Long contractId) {
|
ErpSaleOrderDO order = saleOrderMapper.selectByContractId(contractId);
|
return success(BeanUtils.toBean(order, ErpSaleOrderRespDTO.class));
|
}
|
|
@Override
|
public CommonResult<List<ErpSaleOrderItemRespDTO>> getSaleOrderItemList(Long orderId) {
|
if (orderId == null) {
|
return success(Collections.emptyList());
|
}
|
List<ErpSaleOrderItemDO> items = saleOrderService.getSaleOrderItemListByOrderId(orderId);
|
return success(BeanUtils.toBean(items, ErpSaleOrderItemRespDTO.class));
|
}
|
|
@Override
|
public CommonResult<ErpSaleOrderItemRespDTO> getSaleOrderItem(Long id) {
|
if (id == null) {
|
return success(null);
|
}
|
ErpSaleOrderItemDO item = saleOrderItemMapper.selectById(id);
|
return success(BeanUtils.toBean(item, ErpSaleOrderItemRespDTO.class));
|
}
|
|
@Override
|
public CommonResult<Boolean> updateOrderItemOutCount(Long orderItemId, BigDecimal outCount) {
|
if (orderItemId == null || outCount == null) {
|
return success(false);
|
}
|
ErpSaleOrderItemDO item = saleOrderItemMapper.selectById(orderItemId);
|
if (item == null) {
|
return success(false);
|
}
|
// 累加出库数量
|
BigDecimal newOutCount = (item.getOutCount() != null ? item.getOutCount() : BigDecimal.ZERO).add(outCount);
|
ErpSaleOrderItemDO updateItem = new ErpSaleOrderItemDO();
|
updateItem.setId(orderItemId);
|
updateItem.setOutCount(newOutCount);
|
saleOrderItemMapper.updateById(updateItem);
|
return success(true);
|
}
|
|
@Override
|
public CommonResult<Boolean> updateOrderOutStatus(Long orderId) {
|
if (orderId == null) {
|
return success(false);
|
}
|
saleOrderService.updateSaleOrderOutStatus(orderId);
|
return success(true);
|
}
|
|
@Override
|
public CommonResult<Boolean> updateOrderOutStatusTo(Long orderId, Integer outStatus) {
|
if (orderId == null || outStatus == null) {
|
return success(false);
|
}
|
saleOrderMapper.updateById(new ErpSaleOrderDO()
|
.setId(orderId).setOutStatus(outStatus));
|
return success(true);
|
}
|
|
}
|