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 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 getSaleOrder(Long id) { ErpSaleOrderDO order = saleOrderService.getSaleOrder(id); return success(BeanUtils.toBean(order, ErpSaleOrderRespDTO.class)); } @Override public CommonResult getSaleOrderByContractId(Long contractId) { ErpSaleOrderDO order = saleOrderMapper.selectByContractId(contractId); return success(BeanUtils.toBean(order, ErpSaleOrderRespDTO.class)); } @Override public CommonResult> getSaleOrderItemList(Long orderId) { if (orderId == null) { return success(Collections.emptyList()); } List items = saleOrderService.getSaleOrderItemListByOrderId(orderId); return success(BeanUtils.toBean(items, ErpSaleOrderItemRespDTO.class)); } @Override public CommonResult getSaleOrderItem(Long id) { if (id == null) { return success(null); } ErpSaleOrderItemDO item = saleOrderItemMapper.selectById(id); return success(BeanUtils.toBean(item, ErpSaleOrderItemRespDTO.class)); } @Override public CommonResult 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 updateOrderOutStatus(Long orderId) { if (orderId == null) { return success(false); } saleOrderService.updateSaleOrderOutStatus(orderId); return success(true); } @Override public CommonResult updateOrderOutStatusTo(Long orderId, Integer outStatus) { if (orderId == null || outStatus == null) { return success(false); } saleOrderMapper.updateById(new ErpSaleOrderDO() .setId(orderId).setOutStatus(outStatus)); return success(true); } }