package com.vincent.rsf.server.api.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.api.controller.params.OrderItem; import com.vincent.rsf.server.api.entity.enums.OrderType; import com.vincent.rsf.server.manager.entity.PurchaseItem; import com.vincent.rsf.server.manager.service.PurchaseItemService; import com.vincent.rsf.server.manager.service.PurchaseService; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.api.controller.params.Order; import com.vincent.rsf.server.system.utils.SerialRuleUtils; import com.vincent.rsf.server.api.service.ErpApiService; import com.vincent.rsf.server.manager.entity.Purchase; 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; /** * @author Ryan * @version 1.0 * @title ErpApiServiceImpl * @description * @create 2025/3/4 16:27 */ @Service public class ErpApiServiceImpl extends ServiceImpl implements ErpApiService { @Autowired private PurchaseService purchaseService; @Autowired private PurchaseItemService purchaseItemService; @Override @Transactional(rollbackFor = Exception.class) public boolean syncPurchasee(List orders) { if (orders.isEmpty()) { throw new CoolException("单据内容不能为空!!"); } orders.forEach(ors -> { Purchase purchase = new Purchase(); BeanUtils.copyProperties(ors, purchase); String wkVal = SerialRuleUtils.generateRuleCode(SerialRuleCode.PURCHASE_CODE, purchase); purchase.setCode(wkVal) .setType(OrderType.ORDER_PURCHASE_IN.type); if (!purchaseService.save(purchase)) { throw new CoolException("采购单据保存失败"); } //判断子列表不为空 if (!ors.getChildren().isEmpty()) { ArrayList list = new ArrayList<>(); ors.getChildren().forEach(orderItem -> { PurchaseItem item = new PurchaseItem(); BeanUtils.copyProperties(orderItem, item); item.setPurchaseId(purchase.getId()); list.add(item); }); if (!purchaseItemService.saveBatch(list)) { throw new CoolException("采购单明细保存失败!!"); } } }); return true; } }