package com.example.northglasserpclient.service.sd.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.northglasserpclient.domain.dto.sd.OrderDTO;
import com.example.northglasserpclient.domain.dto.sd.OrderDetailDTO;
import com.example.northglasserpclient.domain.po.sd.*;
import com.example.northglasserpclient.mapper.sd.CustomerOrderMapper;
import com.example.northglasserpclient.mapper.sd.CustomerOrderDetailMapper;
import com.example.northglasserpclient.service.sd.ICustomerOrderDetailService;
import com.example.northglasserpclient.service.sd.ICustomerOrderService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.northglasserpclient.service.sd.IOrderDetailService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
/**
*
* 服务实现类
*
*
* @author liao
* @since 2025-10-29
*/
@Service
@RequiredArgsConstructor
public class CustomerOrderServiceImpl extends ServiceImpl implements ICustomerOrderService {
private final ICustomerOrderDetailService customerOrderDetailService;
private final CustomerOrderMapper customerOrderMapper;
private final CustomerOrderDetailMapper customerOrderDetailMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public String saveCustomerOrder(Map object) {
String saveState = "true";
Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
try {
String customerName = object.get("customerName").toString();
int customerId = Integer.parseInt(object.get("customerId").toString());
String remarks = object.get("remarks").toString();
List customerOrderDetailList = JSONArray.parseArray(JSONObject.toJSONString(object.get("data")), CustomerOrderDetail.class);
CustomerOrder customerOrder=new CustomerOrder();
customerOrder.setCustomerId((long) customerId);
customerOrder.setCustomerName(customerName);
customerOrder.setRemarks(remarks);
customerOrderMapper.insert(customerOrder);
for(CustomerOrderDetail customerOrderDetail : customerOrderDetailList){
CustomerOrderDetail customerOrderDetailNew=new CustomerOrderDetail();
customerOrderDetailNew.setCustomerOrderId(customerOrder.getId());
customerOrderDetailNew.setWidth(customerOrderDetail.getWidth());
customerOrderDetailNew.setHeight(customerOrderDetail.getHeight());
customerOrderDetailNew.setPrice(customerOrderDetail.getPrice());
customerOrderDetailNew.setQuantity(customerOrderDetail.getQuantity());
customerOrderDetailNew.setProductId(customerOrderDetail.getProductId());
customerOrderDetailNew.setProductName(customerOrderDetail.getProductName());
customerOrderDetailMapper.insert(customerOrderDetailNew);
}
}catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
//将异常传入数据库
System.out.println(e+Arrays.toString(e.getStackTrace()));
saveState = "false";
}
return saveState;
}
}