TOrganServiceImpl.java 5.32 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;
20 21
import java.time.LocalDateTime;
import java.util.*;
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
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
39 40 41
    @Resource
    private TAreaMapper areaMapper;

42
    @Override
wzp's avatar
wzp committed
43 44
    public List<TOrgan> getTree(String orgCode) {
        List<TOrgan> list = list(Wrappers.<TOrgan>lambdaQuery().eq(TOrgan::getIsDeleted, 0).likeRight(TOrgan::getCode,orgCode).orderByDesc(TOrgan::getLevel));
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
        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;
    }
60 61 62 63 64 65 66 67

    @Override
    public boolean batchUpload(List excelList) {
        boolean flag =false;
        List<TOrgan> list1 = list();
        HashMap<String, TOrgan> map1 = new HashMap<>();
        list1.stream().forEach(o-> map1.put(o.getName(),o));

wzp's avatar
wzp committed
68
        HashMap<String, String> area = new HashMap<>();
69 70

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

        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
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92

            //机构名称不能重复
            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) {
                    return flag;
                }
            }



93 94 95 96 97 98 99 100
            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
101 102 103 104 105
            if (organ.getLevel()>3){
                return false;
            }
            String organCode = getOrganCode(organ.getParentId());
            organ.setCode(organCode);
wzp's avatar
wzp committed
106
            organ.setAreaId(area.get(map.get("区域")));
107 108 109 110
            organ.setRemarks(map.get("备注"));
            organ.setIsDeleted(false);
            organ.setCreateTime(DateUtil80.getDateTimeOfTimestamp(System.currentTimeMillis()));
            organ.setUpdateTime(LocalDateTime.now());
wzp's avatar
wzp committed
111 112
            flag = save(organ);
//            list.add(organ);
113
        }
wzp's avatar
wzp committed
114
//        flag = saveBatch(list);
115 116
        return flag;
    }
wzp's avatar
wzp committed
117 118 119

    @Override
    public TOrgan selectById(String id) {
wzp's avatar
wzp committed
120 121
        TOrgan organ = organMapper.getById(id);
        String s = areaMapper.selectParent(organ.getAreaId());
wzp's avatar
wzp committed
122
        List<TOrgan> list1 = list(new UpdateWrapper<TOrgan>().eq("parent_id", organ.getId()));
wzp's avatar
wzp committed
123 124 125
        organ.setAreas(Arrays.asList(s.split(",")));
        organ.setChildren(list1);
        return organ;
wzp's avatar
wzp committed
126
    }
wzp's avatar
wzp committed
127 128 129 130 131

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

wzp's avatar
wzp committed
133 134 135 136 137
    @Override
    public List<TOrgan> getAllList(TOrgan tOrgan) {
        return organMapper.getAllList(tOrgan);
    }

wzp's avatar
wzp committed
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157

    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;
    }
158
}