xiejun
2023-10-17 9e341acec731503f1540b65727441e771b8ef9b4
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
package com.vci.ubcs.code.service.impl;
 
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
import com.vci.ubcs.code.dto.DockingSystemDTO;
import com.vci.ubcs.code.entity.DockingSystem;
import com.vci.ubcs.code.entity.DockingSystemConfig;
import com.vci.ubcs.code.mapper.DockingSystemConfigMapper;
import com.vci.ubcs.code.mapper.DockingSystemMapper;
import com.vci.ubcs.code.service.IDockingSystemService;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemVO;
import com.vci.ubcs.code.wrapper.DockingSystemWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
 
import java.util.*;
import java.util.stream.Collectors;
 
import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING;
import static com.vci.ubcs.code.constant.MdmLifeCycleConstant.CODE_RULE_LC;
 
/***
 * 系统接口管理-集成系统服务
 * @author xiejun
 * @date 2023-06-01
 */
@Service
public class DockingSystemServiceImpl extends ServiceImpl<DockingSystemMapper, DockingSystem> implements IDockingSystemService {
    /***
     * 集成系统管理服务
     */
    @Autowired(required = false)
    private  DockingSystemMapper dockingSystemMapper;
 
    /***
     * 集成系统管理服务
     */
    @Autowired(required = false)
    private DockingSystemConfigMapper dockingSystemConfigMapper;
 
    /**
     * 对象的操作
     */
    @Autowired
    private RevisionModelUtil revisionModelUtil;
    @Override
    public boolean addSave(DockingSystemDTO dockingSystemDTO) {
 
        VciBaseUtil.alertNotNull(dockingSystemDTO, "需要添加的数据对象");
        //将DTO转换为DO
        DockingSystem dockingSystem = Objects.requireNonNull(BeanUtil.copy(dockingSystemDTO, DockingSystem.class));
        String userId = AuthUtil.getUserId().toString();
        DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingSystem, MdmBtmTypeConstant.SYS_INT_BASE);
        dockingSystem.setLctid(CODE_RULE_LC);
        dockingSystem.setLcStatus(FRAMEWORK_RELEASE_EDITING);
        return dockingSystemMapper.insert(dockingSystem)>0;
    }
    /**
     * 修改 系统集成的系统信息
     * @param dockingSystemDTO 系统集成的系统信息数据传输对象
     * @return 执行结果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @Override
    public DockingSystemVO editSave(DockingSystemDTO dockingSystemDTO) {
        VciBaseUtil.alertNotNull(dockingSystemDTO,"数据对象",dockingSystemDTO.getOid(),"系统集成的系统信息主键");
        //将DTO转换为DO
        DockingSystem dockingSystem = dockingSystemMapper.selectById(dockingSystemDTO.getOid());
        revisionModelUtil.copyFromDTOIgnore(dockingSystemDTO,dockingSystem);
        DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingSystem);
        dockingSystemMapper.updateById(dockingSystem);
        return DockingSystemWrapper.build().entityVO(dockingSystem);
    }
 
    /***
     * 根据系统主键删除系统名称
     * @param oids
     * @return
     * @throws VciBaseException
     */
    @Override
    public boolean deleteDataById(String oids) throws VciBaseException {
        String message="";
        try {
            VciBaseUtil.alertNotNull(oids, "系统集成的系统信息的主键");
            List<DockingSystem> dockingSystemList = dockingSystemMapper.selectBatchIds(VciBaseUtil.str2List(oids));
            Map<String/**系统oid**/, String/**系统名称**/> systemNameMap = dockingSystemList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t.getName(),(o1, o2)->o2));
            List<DockingSystemConfig> dockingSystemConfigList = dockingSystemConfigMapper.selectList(Wrappers.<DockingSystemConfig>query().lambda().in(DockingSystemConfig::getSourceSystemOid, VciBaseUtil.str2List(oids)));
            Set<String> systemOidList=new HashSet<>();
            Map<String,String> errorMap = new HashMap<>();
            if (!CollectionUtils.isEmpty(dockingSystemConfigList)) {
                dockingSystemConfigList.stream().forEach(dockingSystemConfig -> {
                    if(!systemOidList.contains(dockingSystemConfig.getSourceSystemOid())&&
                        systemNameMap.containsKey(dockingSystemConfig.getSourceSystemOid())){
                        String systemName=systemNameMap.get(dockingSystemConfig.getSourceSystemOid());
                        errorMap.put("error",errorMap.getOrDefault("error","") + ";"+systemName);
                    }
                    systemOidList.add(dockingSystemConfig.getSourceSystemOid());
                });
            }
            if(errorMap.size()>0){
                throw  new Throwable(errorMap.getOrDefault("error",""));
            }
            return    dockingSystemMapper.deleteBatchIds(VciBaseUtil.str2List(oids))>0;
        }catch (Throwable e){
            e.printStackTrace();
            throw  new VciBaseException(e.getMessage());
 
        }
    }
}