TOrganServiceImpl.java 5.66 KB
Newer Older
1 2
package cn.wisenergy.chnmuseum.party.service.impl;

3 4

import cn.wisenergy.chnmuseum.party.common.util.DateUtil80;
wzp's avatar
wzp committed
5 6
import cn.wisenergy.chnmuseum.party.mapper.TAreaMapper;
import cn.wisenergy.chnmuseum.party.model.TArea;
7 8 9
import cn.wisenergy.chnmuseum.party.model.TOrgan;
import cn.wisenergy.chnmuseum.party.mapper.TOrganMapper;
import cn.wisenergy.chnmuseum.party.service.TOrganService;
wzp's avatar
wzp committed
10
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
wzp's avatar
wzp committed
11
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
12 13 14 15
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import lombok.extern.slf4j.Slf4j;
wzp's avatar
wzp committed
16
import org.apache.commons.lang3.StringUtils;
17 18 19
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
wzp's avatar
wzp committed
20
import java.rmi.server.ExportException;
21 22
import java.time.LocalDateTime;
import java.util.*;
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
import java.util.stream.Collectors;

/**
 * <pre>
 * 用户 服务实现类
 * </pre>
 *
 * @author Danny Lee
 * @since 2021-03-22
 */
@Slf4j
@Service
public class TOrganServiceImpl extends ServiceImpl<TOrganMapper, TOrgan> implements TOrganService {

    @Resource
    private TOrganMapper organMapper;

wzp's avatar
wzp committed
40 41 42
    @Resource
    private TAreaMapper areaMapper;

43
    @Override
wzp's avatar
wzp committed
44 45
    public List<TOrgan> getTree(String orgCode) {
        List<TOrgan> list = list(Wrappers.<TOrgan>lambdaQuery().eq(TOrgan::getIsDeleted, 0).likeRight(TOrgan::getCode,orgCode).orderByDesc(TOrgan::getLevel));
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
        HashMap<String, TOrgan> map = new HashMap<>();
        list.forEach(o-> map.put(o.getId(),o));
        for (TOrgan o : list) {
            TOrgan parentOrg= map.get(o.getParentId());
            if(parentOrg!=null){
                //说明有值
                if(parentOrg.getChildren()==null){
                    parentOrg.setChildren(new ArrayList<>());
                }
                parentOrg.getChildren().add(o);
            }
        }
        list = list.stream().filter(o -> o.getLevel() == 1).collect(Collectors.toList());
        return list;
    }
61 62

    @Override
wzp's avatar
wzp committed
63
    public boolean batchUpload(List excelList) throws Exception{
64
        boolean flag =false;
wzp's avatar
wzp committed
65 66

        if (excelList.size()<1){
wzp's avatar
wzp committed
67
            throw new Exception("文件没有数据!");
wzp's avatar
wzp committed
68
        }
69 70 71 72
        List<TOrgan> list1 = list();
        HashMap<String, TOrgan> map1 = new HashMap<>();
        list1.stream().forEach(o-> map1.put(o.getName(),o));

wzp's avatar
wzp committed
73
        HashMap<String, String> area = new HashMap<>();
74 75

        List<Map<String, Object>> mapList = organMapper.selectArea();
wzp's avatar
wzp committed
76
        mapList.stream().forEach(m->area.put(m.get("name").toString(),m.get("id").toString()));
wzp's avatar
wzp committed
77

78 79 80 81 82
        for (int i = 0; i < excelList.size(); i++) {
            Map<String, String> map = null;
            map = (Map<String, String>) excelList.get(i);
            TOrgan organ = new TOrgan();
            organ.setName(map.get("名称"));
wzp's avatar
wzp committed
83 84 85 86 87 88 89 90 91

            //机构名称不能重复
            QueryWrapper<TOrgan> ew = new QueryWrapper<>();
            if (StringUtils.isNoneBlank(organ.getName())) {
                organ.setName(organ.getName().trim());
                ew.eq("is_deleted", 0);
                ew.eq("name", organ.getName());
                List<TOrgan> list = list(ew);
                if (list != null&&list.size()>0&&list.get(0)!=null) {
wzp's avatar
wzp committed
92
                    throw new Exception("机构名称不能重复!");
wzp's avatar
wzp committed
93 94
                }
            }
wzp's avatar
wzp committed
95
            try {
96 97 98 99 100 101 102 103
            String parent = map.get("上级机构");
            if (map1.get(parent)==null){
                organ.setParentId("0");
                organ.setLevel(1);
            }else {
                organ.setParentId(map1.get(parent).getId());
                organ.setLevel(map1.get(parent).getLevel()+1);
            }
wzp's avatar
wzp committed
104 105 106 107 108
            if (organ.getLevel()>3){
                return false;
            }
            String organCode = getOrganCode(organ.getParentId());
            organ.setCode(organCode);
wzp's avatar
wzp committed
109
            organ.setAreaId(area.get(map.get("区域")));
110 111 112 113
            organ.setRemarks(map.get("备注"));
            organ.setIsDeleted(false);
            organ.setCreateTime(DateUtil80.getDateTimeOfTimestamp(System.currentTimeMillis()));
            organ.setUpdateTime(LocalDateTime.now());
wzp's avatar
wzp committed
114 115

                flag = save(organ);
wzp's avatar
wzp committed
116
//            list.add(organ);
wzp's avatar
wzp committed
117 118 119
            } catch (Exception e) {
                throw new Exception("文件数据错误!");
            }
120
        }
wzp's avatar
wzp committed
121

wzp's avatar
wzp committed
122
//        flag = saveBatch(list);
123 124
        return flag;
    }
wzp's avatar
wzp committed
125 126 127

    @Override
    public TOrgan selectById(String id) {
wzp's avatar
wzp committed
128 129
        TOrgan organ = organMapper.getById(id);
        String s = areaMapper.selectParent(organ.getAreaId());
wzp's avatar
wzp committed
130
        List<TOrgan> list1 = list(new UpdateWrapper<TOrgan>().eq("parent_id", organ.getId()).eq("is_deleted",false));
wzp's avatar
wzp committed
131 132 133
        organ.setAreas(Arrays.asList(s.split(",")));
        organ.setChildren(list1);
        return organ;
wzp's avatar
wzp committed
134
    }
wzp's avatar
wzp committed
135 136 137 138 139

    @Override
    public TOrgan selectCodeMax(String parentId) {
        return organMapper.selectCodeMax(parentId);
    }
wzp's avatar
wzp committed
140

wzp's avatar
wzp committed
141 142 143 144 145
    @Override
    public List<TOrgan> getAllList(TOrgan tOrgan) {
        return organMapper.getAllList(tOrgan);
    }

wzp's avatar
wzp committed
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165

    private String getOrganCode(String parentId) {
        TOrgan max = selectCodeMax(parentId);
        if (max==null){
            max = getById(parentId);
            String s = max.getCode() + "001";
            return s;
        }
        String s = max.getCode().substring(max.getCode().length() - 3);
        String s1 = max.getCode().substring(0,max.getCode().length() - 3);
        Integer integer = Integer.valueOf(s)+1;
        if (integer<10){
            s1=s1+"00"+integer.toString();
        }else if (integer<100){
            s1=s1+"0"+integer.toString();
        }else {
            s1=s1+integer.toString();
        }
        return s1;
    }
166
}