package com.sunda.spmsorder.service.impl;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.sunda.spmsorder.entity.MaterialCategoryLabor;
import com.sunda.spmsorder.entity.MaterialPrice;
import com.sunda.spmsorder.mapper.MaterialPriceMapper;
import com.sunda.spmsorder.service.IMaterialPriceService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author hzc
 * @since 2022-05-17
 */
@Service
public class MaterialPriceServiceImpl extends ServiceImpl<MaterialPriceMapper, MaterialPrice> implements IMaterialPriceService {

    @Override
    @Transactional(rollbackFor = Exception.class)
    public synchronized Boolean syncMaterialPrice(JSONObject doc) {
        try {
            List<Map> dataList = (List) doc.get("doc");
            List<MaterialPrice> list = new ArrayList<MaterialPrice>();
            for (int i = 0; i < dataList.size(); i++){
                MaterialPrice labor = new MaterialPrice();
                labor.setMaterialNo(dataList.get(i).get("materialNumber")==null?"":dataList.get(i).get("materialNumber").toString());
                labor.setEach(dataList.get(i).get("each")==null?"":dataList.get(i).get("each").toString());
                labor.setPrice(dataList.get(i).get("price")==null?"":dataList.get(i).get("price").toString());
                labor.setCurrency(dataList.get(i).get("currency")==null?"":dataList.get(i).get("currency").toString());
                labor.setPriceUnit(dataList.get(i).get("priceUnit")==null?"":dataList.get(i).get("priceUnit").toString());
                labor.setStartDate(dataList.get(i).get("startDate")==null?"":dataList.get(i).get("startDate").toString());
                labor.setEndDate(dataList.get(i).get("endDate")==null?"":dataList.get(i).get("endDate").toString());
                labor.setUpdateDate(dataList.get(i).get("lastUpdateDate")==null?"":dataList.get(i).get("lastUpdateDate").toString());
                labor.setSource("SRM");
                list.add(labor);
            }
            saveBatch(list);
            return true;
        }catch (Exception e){
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return false;
        }
    }

}
