huanghongfa
2021-08-21 2e64c232ab6b51b2cecf1ee96e1e9b709234f326
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
package com.panzhihua.service_community.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.dtos.community.EldersAuthElderlyDTO;
import com.panzhihua.common.model.dtos.community.PageComEldersAuthElderlyDTO;
import com.panzhihua.common.model.dtos.community.PageEldersAuthElderlyDTO;
import com.panzhihua.common.model.helper.AESUtil;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComEldersAuthElderlyVO;
import com.panzhihua.common.model.vos.community.EldersAuthElderlyExcelVO;
import com.panzhihua.common.utlis.AgeUtils;
import com.panzhihua.common.utlis.IdCard;
import com.panzhihua.service_community.dao.ComEldersAuthElderlyMapper;
import com.panzhihua.service_community.model.dos.ComEldersAuthElderlyDO;
import com.panzhihua.service_community.service.ComEldersAuthElderlyService;
import com.panzhihua.service_community.service.EldersAuthService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
 
import javax.annotation.Resource;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.*;
 
/**
 * 高龄老人库 serviceImpl
 *
 * @author cedoo email:cedoo(a)qq.com
 * @version 1.0
 * @since 1.0
 * @date 2021-06-09
 * */
@Slf4j
@Service
public class ComEldersAuthElderlyServiceImpl extends ServiceImpl<ComEldersAuthElderlyMapper, ComEldersAuthElderlyDO> implements ComEldersAuthElderlyService {
 
    @Resource
    private ComEldersAuthElderlyMapper comEldersAuthElderlyMapper;
 
    @Value("${domain.aesKey:}")
    private String aesKey;
 
    @Resource
    private EldersAuthService eldersAuthService;
 
    @Override
    public R pageQueryEldersAuthElderly(PageEldersAuthElderlyDTO pageEldersAuthElderlyDTO) {
        PageComEldersAuthElderlyDTO pageComEldersAuthElderlyDTO = new PageComEldersAuthElderlyDTO();
        BeanUtils.copyProperties(pageEldersAuthElderlyDTO,pageComEldersAuthElderlyDTO);
        IPage<ComEldersAuthElderlyVO> page = comEldersAuthElderlyMapper.findByPage(new Page(pageEldersAuthElderlyDTO.getPageNum(),pageEldersAuthElderlyDTO.getPageSize()),pageComEldersAuthElderlyDTO);
        return R.ok(page);
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R batchSave(List<EldersAuthElderlyExcelVO> list,Long communityId,Long createBy) {
        List<ComEldersAuthElderlyDO> listNewDO = new ArrayList<>();
        List<ComEldersAuthElderlyDO> listUpdateDO = new ArrayList<>();
        list.forEach(e->{
            String idCardProto = e.getIdCard();
            if(idCardProto!=null && idCardProto.contains("x")){
                idCardProto = idCardProto.replaceAll("x", "X");
            }
            String idCardEncrypted = idCardProto;
            try {
                idCardEncrypted = AESUtil.encrypt128(idCardEncrypted, aesKey);
            } catch (Exception exp) {
                exp.printStackTrace();
            }
            List<ComEldersAuthElderlyDO> comEldersAuthElderlyDOList =
                    comEldersAuthElderlyMapper.selectList(new LambdaQueryWrapper<ComEldersAuthElderlyDO>().eq(ComEldersAuthElderlyDO::getIdCard, idCardEncrypted)
                    .orderByDesc(ComEldersAuthElderlyDO::getCreateAt));
 
            if(comEldersAuthElderlyDOList!=null && comEldersAuthElderlyDOList.size()>0){
                ComEldersAuthElderlyDO lastestOne = comEldersAuthElderlyDOList.get(0);
                lastestOne.setName(e.getName());
                lastestOne.setCommunityId(communityId);
                lastestOne.setUpdateBy(createBy);
                lastestOne.setIdCard(null);
                lastestOne.setDomicile(eldersAuthService.queryDomicile(e.getIdCard()));
                lastestOne.setIsExist(Objects.equals("是",e.getIsExist())?1:2);
                lastestOne.setIsBigAge(Objects.equals("是",e.getIsExist())?1:2);
                lastestOne.setUpdateAt(new Date());
                listUpdateDO.add(lastestOne);
            }else{
                ComEldersAuthElderlyDO comEldersAuthElderlyDO = new ComEldersAuthElderlyDO();
                comEldersAuthElderlyDO.setName(e.getName());
                comEldersAuthElderlyDO.setIdCard(e.getIdCard());
                comEldersAuthElderlyDO.setCommunityId(communityId);
                comEldersAuthElderlyDO.setCreateBy(createBy);
                comEldersAuthElderlyDO.setDomicile(eldersAuthService.queryDomicile(e.getIdCard()));
                comEldersAuthElderlyDO.setIsExist(Objects.equals("是",e.getIsExist())?1:2);
                comEldersAuthElderlyDO.setIsBigAge(Objects.equals("是",e.getIsExist())?1:2);
                comEldersAuthElderlyDO.setBirthday(e.getBirthday());
                comEldersAuthElderlyDO.setLevel(e.getLevel());
                listNewDO.add(comEldersAuthElderlyDO);
            }
 
        });
        boolean noImport = (listNewDO==null || listNewDO.size()==0) &&  (listUpdateDO==null || listUpdateDO.size()==0);
        if(noImport){
            throw new ServiceException("未发现高龄老人数据");
        }
        if(listNewDO!=null && listNewDO.size()>0) {
            boolean batchAdd = this.saveBatch(listNewDO);
            if (!batchAdd) {
                throw new ServiceException("批量插入失败");
            }
        }
        if(listUpdateDO!=null && listUpdateDO.size()>0) {
            boolean batchUpdate = this.updateBatchById(listUpdateDO);
            if (!batchUpdate) {
                throw new ServiceException("批量更新失败");
            }
        }
 
        return R.ok("共计导入高龄老人数量:" + list.size());
    }
 
 
    @Override
    public R getEldersAuthElderlyById(Long id) {
        ComEldersAuthElderlyDO comEldersAuthElderlyDO = this.baseMapper.selectById(id);
        if(comEldersAuthElderlyDO==null){
            return R.fail("记录不存在");
        }
        ComEldersAuthElderlyVO comEldersAuthElderlyVO = new ComEldersAuthElderlyVO();
        BeanUtils.copyProperties(comEldersAuthElderlyDO,comEldersAuthElderlyVO);
        return R.ok(comEldersAuthElderlyVO);
    }
 
    @Override
    public R updateEldersAuthElderly(EldersAuthElderlyDTO eldersAuthElderlyDTO) {
        ComEldersAuthElderlyDO  comEldersAuthElderlyDO = this.baseMapper.selectById(eldersAuthElderlyDTO.getId());
        if(!ObjectUtils.isEmpty(eldersAuthElderlyDTO.getName())){
            comEldersAuthElderlyDO.setName(eldersAuthElderlyDTO.getName());
        }
        if(eldersAuthElderlyDTO.getIsExist()!=null&&
                eldersAuthElderlyDTO.getIsExist().intValue()!=1 && eldersAuthElderlyDTO.getIsExist()!=2){
            return R.fail("参数错误,是否健在只能为1或2");
        }
        comEldersAuthElderlyDO.setIsExist(eldersAuthElderlyDTO.getIsExist());
        comEldersAuthElderlyDO.setIsBigAge(eldersAuthElderlyDTO.getIsBigAge());
        baseMapper.updateEldersAuthElderly(comEldersAuthElderlyDO);
        return R.ok();
    }
 
    @Override
    public R deleteEldersAuthElderly(Long id) {
        if(this.baseMapper.deleteById(id) > 0){
            //删除用户关联的老人信息
            this.baseMapper.deleteEldersAuthUserById(id);
            return R.ok();
        }
        return R.fail();
    }
}