package com.example.erp.service.sd;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
import com.example.erp.entity.sd.Order;
|
import com.example.erp.entity.sd.OrderDetail;
|
import com.example.erp.mapper.sd.OrderDetailMapper;
|
import com.example.erp.mapper.sd.OrderMapper;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.text.SimpleDateFormat;
|
import java.time.LocalDate;
|
import java.time.format.DateTimeFormatter;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
@Service
|
@DS("sd")
|
@Transactional
|
public class OrderService {
|
@Autowired
|
private OrderMapper orderMapper;
|
@Autowired
|
private OrderDetailMapper orderDetailMapper;
|
|
public boolean saveOrder(Map<String,Object> orderMap) {
|
JSONObject orderJson = new JSONObject(orderMap);
|
Order order = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("title")), Order.class);
|
List<OrderDetail> OrderDetails = JSONArray.parseArray(JSONObject.toJSONString(orderJson.get("detail")), OrderDetail.class);
|
boolean saveState = true;
|
//判断传入id参数是否为空,未传入id为空插入订单表,传入更新表
|
// System.out.println(order);
|
if(order.getOrderId() == null || order.getOrderId().isEmpty()){
|
insertOrder(order,OrderDetails);
|
}else {
|
saveState = updateOrder(order,OrderDetails);
|
}
|
|
|
|
|
return true;
|
}
|
|
public void insertOrder(Order order,List<OrderDetail> OrderDetails) {
|
Integer maxOrderId = orderMapper.selectMaxOrderId();
|
//查询订单id,并且自增
|
String formattedNumber = String.format("%02d", maxOrderId+1);
|
//格式化当前日期
|
Date currentDate = new Date();
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
|
String formattedDate = dateFormat.format(currentDate);
|
String orderId = "NG"+formattedDate+formattedNumber;
|
//往主表插数据
|
order.setOrderId(orderId);
|
orderMapper.insert(order);
|
//循环给订单明细表字段添加序号和周长
|
for (int i = 0; i < OrderDetails.size(); i++) {
|
OrderDetails.get(i).setOrderNumber(i+1);
|
OrderDetails.get(i).setOrderId(orderId);
|
OrderDetails.get(i).setPerimeter(OrderDetails.get(i).getWidth()*OrderDetails.get(i).getHeight()*2);
|
OrderDetails.get(i).setWeight(1.0);
|
}
|
//往明细表插数据
|
orderDetailMapper.insertBatch(OrderDetails);
|
}
|
|
public boolean updateOrder(Order order,List<OrderDetail> OrderDetails) {
|
return false;
|
}
|
}
|