McBasicCmtyServiceImpl.java 7.08 KB
package com.chinagas.modules.schsf.service.impl;

import com.chinagas.common.core.exceptions.ServiceException;
import com.chinagas.common.core.utils.DateUtils;
import com.chinagas.common.datascope.annotation.DataScope;
import com.chinagas.common.security.utils.SecurityUtils;
import com.chinagas.modules.schsf.domain.McBasicCmty;
import com.chinagas.modules.schsf.domain.McVisit;
import com.chinagas.modules.schsf.domain.dto.CompanyDto;
import com.chinagas.modules.schsf.domain.vo.McBasicCmtyVo;
import com.chinagas.modules.schsf.domain.vo.McVisitVo;
import com.chinagas.modules.schsf.mapper.McBasicCmtyMapper;
import com.chinagas.modules.schsf.service.ICommonService;
import com.chinagas.modules.schsf.service.IMcBasicCmtyService;
import com.chinagas.modules.schsf.service.IMcConstructionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;

/**
 * 基础数据-户数Service业务层处理
 *
 * @author cw
 * @date 2024-05-22
 */
@Service
public class McBasicCmtyServiceImpl implements IMcBasicCmtyService {
    @Autowired
    private McBasicCmtyMapper mcBasicCmtyMapper;
    @Autowired
    private IMcConstructionService iMcConstructionService;
    @Autowired
    private ICommonService commonService;

    /**
     * 查询基础数据-户数
     *
     * @param id 基础数据-户数主键
     * @return 基础数据-户数
     */
    @Override
    public McBasicCmty selectMcBasicCmtyById(Long id) {
        return mcBasicCmtyMapper.selectMcBasicCmtyById(id);
    }

    /**
     * 查询基础数据-户数列表
     *
     * @param mcBasicCmtyVo 基础数据-户数
     * @return 基础数据-户数
     */
    @DataScope(deptAlias = "d", userAlias = "u")
    @Override
    public List<McBasicCmty> selectMcBasicCmtyList(McBasicCmtyVo mcBasicCmtyVo) {
        return mcBasicCmtyMapper.selectMcBasicCmtyList(mcBasicCmtyVo);
    }

    /**
     * 新增基础数据-户数
     *
     * @param mcBasicCmty 基础数据-户数
     * @return 结果
     */
    @Override
    public int insertMcBasicCmty(McBasicCmty mcBasicCmty) {
        mcBasicCmty.setUpdateTime(DateUtils.getNowLocal());
        mcBasicCmty.setUpdateBy(SecurityUtils.getUserId().toString());
        //1:判断是否已存在
        List<McBasicCmty> data = mcBasicCmtyMapper.selectMcBasicCmtyByData(mcBasicCmty);
        if (data != null && data.size() > 0 && data.get(0) != null) {
            //update
            mcBasicCmty.setId(data.get(0).getId());
            int i = mcBasicCmtyMapper.updateMcBasicCmty(mcBasicCmty);
            return i;
        }
        mcBasicCmty.setCreateTime(DateUtils.getNowLocal());
        mcBasicCmty.setCreateBy(SecurityUtils.getUserId().toString());
        HashMap<String, String> sysDeptByidName = commonService.selectSysDeptByidName(mcBasicCmty.getCompanyCode(), mcBasicCmty.getCompanyName());
        if (sysDeptByidName == null || sysDeptByidName.size() == 0) {
            throw new ServiceException(String.format("项目公司:‘%s’,项目公司代码:‘%s’,与组织信息不匹配,请核实", mcBasicCmty.getCompanyName(),mcBasicCmty.getCompanyCode()));
        }
        int i = mcBasicCmtyMapper.insertMcBasicCmty(mcBasicCmty);
        if (i > 0) {
            iMcConstructionService.insertMcConstructionByMcBasicCmty(mcBasicCmty);
        }
        return i;
    }

    /**
     * 修改基础数据-户数
     *
     * @param mcBasicCmty 基础数据-户数
     * @return 结果
     */
    @Override
    public int updateMcBasicCmty(McBasicCmty mcBasicCmty) {
        mcBasicCmty.setUpdateTime(DateUtils.getNowLocal());
        return mcBasicCmtyMapper.updateMcBasicCmty(mcBasicCmty);
    }

    /**
     * 批量删除基础数据-户数
     *
     * @param ids 需要删除的基础数据-户数主键
     * @return 结果
     */
    @Override
    public int deleteMcBasicCmtyByIds(Long[] ids) {
        return mcBasicCmtyMapper.deleteMcBasicCmtyByIds(ids);
    }

    /**
     * 删除基础数据-户数信息
     *
     * @param id 基础数据-户数主键
     * @return 结果
     */
    @Override
    public int deleteMcBasicCmtyById(Long id) {
        return mcBasicCmtyMapper.deleteMcBasicCmtyById(id);
    }

    /**
     * 查询公司级联
     *
     * @return
     */

    @DataScope(deptAlias = "d", userAlias = "u")
    @Override
    public List<CompanyDto> selectCompanyCascader(McBasicCmtyVo mcBasicCmtyVo) {
        List<CompanyDto> companyDtos = mcBasicCmtyMapper.getDistinctRegionList(mcBasicCmtyVo);
        companyDtos.forEach(companyDto -> {
            List<CompanyDto> groups = loadDistinctGroups(mcBasicCmtyVo, companyDto);
            groups.forEach(group -> group.setChildren(loadDistinctCompanies(mcBasicCmtyVo, group, companyDto)));
            companyDto.setChildren(groups);
        });
        return companyDtos;
    }

    /**
     * 查询小区
     *
     * @param mcBasicCmtyVo
     * @return
     */
    @Override
    public List<McBasicCmty> selectVlgOrCmtyList(McBasicCmtyVo mcBasicCmtyVo) {
        return mcBasicCmtyMapper.selectVlgOrCmtyList(mcBasicCmtyVo);
    }

    /**
     * 验证所选组织是否存在
     * @param mcVisitVo
     * @return
     */
    @Override
    public List<McBasicCmty> selectVisitDeptList(McVisit mcVisit) {
        McBasicCmtyVo mcBasicCmtyVo=new McBasicCmtyVo();
        mcBasicCmtyVo.setRegionName(mcVisit.getRegionName());
        mcBasicCmtyVo.setGroupName(mcVisit.getGroupName());
        mcBasicCmtyVo.setCompanyName(mcVisit.getCompanyName());
        mcBasicCmtyVo.setCompanyCode(mcVisit.getCompanyCode());
        mcBasicCmtyVo.setVlgOrCmty(mcVisit.getVlgOrCmty());
        return mcBasicCmtyMapper.selectVisitDeptList(mcBasicCmtyVo);
    }

    private List<CompanyDto> loadDistinctGroups(McBasicCmtyVo mcBasicCmtyVo, CompanyDto parent) {
        mcBasicCmtyVo.setRegionName(parent.getValue());
        return mcBasicCmtyMapper.getDistinctGroupList(mcBasicCmtyVo);
    }

    private List loadDistinctCompanies(McBasicCmtyVo mcBasicCmtyVo, CompanyDto groupParent, CompanyDto regionParent) {
        mcBasicCmtyVo.setGroupName(groupParent.getValue());
        List<McBasicCmty> distinctCompanyList = mcBasicCmtyMapper.getDistinctCompanyList(mcBasicCmtyVo);
        ArrayList<Object> lists = new ArrayList<>();
        for (McBasicCmty mcBasicCmty : distinctCompanyList) {
//            HashMap<String, Object> valueData = new HashMap<String, Object>();
//            valueData.put("regionName",regionParent.getValue());
//            valueData.put("groupName",groupParent.getValue());
//            valueData.put("companyName",mcBasicCmty.getCompanyName());
//            valueData.put("companyCode",mcBasicCmty.getCompanyCode());
//            valueData.put("urbRurCls",mcBasicCmty.getUrbRurCls());
//            valueData.put("value",mcBasicCmty.getCompanyCode());
            HashMap<String, Object> data = new HashMap<String, Object>();
            data.put("value", mcBasicCmty.getCompanyCode());
            data.put("label", mcBasicCmty.getCompanyName());
            lists.add(data);
        }
        return lists;
    }
}