9569d4781c9717fab2fd07ff1328b55375656613.svn-base 4.8 KB
package com.gx.obe.server.management.boq.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gx.obe.server.common.utils.IDUtils;
import com.gx.obe.server.common.utils.StringUtils;
import com.gx.obe.server.management.boq.dao.ObeServiceCostsMapper;
import com.gx.obe.server.management.boq.entity.ObeServiceCosts;
import com.gx.obe.server.management.boq.service.ObeServiceCostsService;
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 mazc
 * @Description:
 */
@Service
@Transactional
public class ObeServiceCostsServiceImpl extends ServiceImpl<ObeServiceCostsMapper, ObeServiceCosts> implements ObeServiceCostsService {

    @Autowired
    private ObeServiceCostsMapper obeServiceCostsMapper;

    /**
     * @param ObeServiceCostsList
     * @Description: 批量更新
     * @author mazc
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Integer updateByBatch(List<ObeServiceCosts> ObeServiceCostsList) {
        return obeServiceCostsMapper.updateBatchList(ObeServiceCostsList);
    }

    /**
     * @param ObeServiceCostsList
     * @Description: 批量插入
     * @author mazc
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Integer insertByBatch(List<ObeServiceCosts> ObeServiceCostsList) {
        return obeServiceCostsMapper.insertByBatch(ObeServiceCostsList);
    }

    /**
     * @param ObeServiceCosts
     * @param attributes
     * @Description: 指定字段修改
     * @author chenxw
     */
    @Override
    public boolean updateAssignProperty(ObeServiceCosts ObeServiceCosts, String[] attributes) {
        return obeServiceCostsMapper.updateAssignProperty(ObeServiceCosts, attributes) > 0;
    }

    /**
     * @param ObeServiceCostsList
     * @param attributes
     * @Description: 批量指定字段修改
     * @author chenxw
     */
    @Override
    public Integer batchUpdateProperty(List<ObeServiceCosts> ObeServiceCostsList, String[] attributes) {
        return obeServiceCostsMapper.batchUpdateProperty(ObeServiceCostsList, attributes);
    }

    /**
     * @param ObeServiceCostsList
     * @param attributes
     * @return
     * @Description: 批量添加或跟新
     * @author chenxw
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Integer batchSaveOrUpdate(List<ObeServiceCosts> ObeServiceCostsList, String[] attributes) {
        List<ObeServiceCosts> insertObeServiceCostsList = new ArrayList<>();
        List<ObeServiceCosts> updateObeServiceCostsList = new ArrayList<>();
        for (ObeServiceCosts ObeServiceCosts : ObeServiceCostsList) {
            if (StringUtils.isEmpty(ObeServiceCosts.getId())) {
                ObeServiceCosts.setId(IDUtils.getId());
                insertObeServiceCostsList.add(ObeServiceCosts);
            } else {
                updateObeServiceCostsList.add(ObeServiceCosts);
            }
        }
        int count = 0;
        if (insertObeServiceCostsList.size() > 0) {
            count += obeServiceCostsMapper.insertByBatch(insertObeServiceCostsList);
        }
        if (updateObeServiceCostsList.size() > 0) {
            count += obeServiceCostsMapper.batchUpdateProperty(updateObeServiceCostsList, attributes);
        }
        return count;
    }

    /**
     * @param projectId
     * @return ServiceCosts
     * @Description: 根据项目Id,获得总承包服务费。
     * @author guoyr
     */
    public List<ObeServiceCosts> getServiceCostsListByProjectId(String projectId) {
        return initChildServiceCosts(obeServiceCostsMapper.getServiceCostsListByProjectId(projectId));
    }

    /**
     * @Description:  总承包服务费封装树节点(双重循环实现拼接)
     * @author guoyr
     * @param list
     * @return
     */
    private List<ObeServiceCosts> initChildServiceCosts(List<ObeServiceCosts> list){
        List<ObeServiceCosts> serviceCostsList = new ArrayList<ObeServiceCosts>();
        if(null != list && list.size() > 0){
            for(ObeServiceCosts parentServiceCosts : list){
                for(ObeServiceCosts childServiceCosts : list){
                    if(null != childServiceCosts.getParentId() && childServiceCosts.getParentId().equals(parentServiceCosts.getId())){
                        parentServiceCosts.addChild(childServiceCosts);
                        childServiceCosts.setParentServiceCosts(parentServiceCosts);
                    }
                }
                // 如果是顶级
                if(StringUtils.isEmpty(parentServiceCosts.getParentId())){
                    serviceCostsList.add(parentServiceCosts);
                }
            }
        }
        return serviceCostsList;
    }

}