dengzedong
2024-09-26 587b438f50abb725f3dee63eaf6b586c09085f54
提交 | 用户 | 时间
449017 1 package com.iailab.module.model.mpk.service.impl;
D 2
423f24 3 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
449017 4 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
D 5 import com.baomidou.mybatisplus.core.metadata.IPage;
6 import com.iailab.framework.common.page.PageData;
7 import com.iailab.framework.common.service.impl.CrudServiceImpl;
8 import com.iailab.framework.common.util.object.ConvertUtils;
9 import com.iailab.module.model.mpk.dao.MpkFileDao;
10 import com.iailab.module.model.mpk.dao.ProjectDao;
11 import com.iailab.module.model.mpk.dto.MpkFileDTO;
12 import com.iailab.module.model.mpk.dto.ProjectDTO;
13 import com.iailab.module.model.mpk.dto.ProjectModelDTO;
14 import com.iailab.module.model.mpk.dto.ProjectPackageHistoryDTO;
15 import com.iailab.module.model.mpk.entity.ProjectEntity;
16 import com.iailab.module.model.mpk.service.ProjectModelService;
17 import com.iailab.module.model.mpk.service.ProjectPackageHistoryModelService;
18 import com.iailab.module.model.mpk.service.ProjectPackageHistoryService;
19 import com.iailab.module.model.mpk.service.ProjectService;
20 import lombok.extern.slf4j.Slf4j;
21 import org.apache.commons.collections.CollectionUtils;
22 import org.apache.commons.lang3.StringUtils;
23 import org.springframework.beans.factory.annotation.Autowired;
24 import org.springframework.stereotype.Service;
25
26 import java.io.File;
27 import java.util.*;
28 import java.util.stream.Collectors;
29
30 /**
31  * @description: 项目表
32  * @author: dzd
33  * @date: 2024/8/22 14:40
34  **/
35 @Service
36 @Slf4j
37 public class ProjectServiceImpl extends CrudServiceImpl<ProjectDao, ProjectEntity, ProjectDTO> implements ProjectService {
38
39     @Autowired
40     ProjectModelService projectModelService;
41     @Autowired
42     ProjectPackageHistoryService projectPackageHistoryService;
43     @Autowired
44     ProjectPackageHistoryModelService projectPackageHistoryModelService;
45     @Autowired
46     MpkFileDao mpkFileDao;
47
48     @Override
49     public PageData<ProjectDTO> page(Map<String, Object> params) {
50         IPage<ProjectDTO> page = baseDao.getPageList(
51                 getPage(params, null, false),
52                 params
53         );
54
55         return getPageData(page, ProjectDTO.class);
56     }
57
58     @Override
59     public List<ProjectDTO> list(Map<String, Object> params) {
60         List<ProjectEntity> entityList = baseDao.selectList(getWrapper(params).orderByDesc("create_time"));
61
62         return ConvertUtils.sourceToTarget(entityList, ProjectDTO.class);
63     }
64
65     @Override
66     public ProjectDTO get(String id) {
67         ProjectEntity entity = baseDao.selectById(id);
68         ProjectDTO dto = ConvertUtils.sourceToTarget(entity, ProjectDTO.class);
69
70         Map<String,Object> map = new HashMap<>();
71         map.put("projectId",id);
72         List<ProjectModelDTO> projectModelList = projectModelService.list(map);
73         dto.setModels(projectModelList.stream().map(e -> {
74             MpkFileDTO mdkFileDTO = new MpkFileDTO();
75             mdkFileDTO.setId(e.getModelId());
76             return mdkFileDTO;
77         }).collect(Collectors.toList()));
78
79         return dto;
80     }
81
82     @Override
423f24 83     @DSTransactional(rollbackFor = Exception.class)
449017 84     public void save(ProjectDTO dto) {
D 85         ProjectEntity entity = ConvertUtils.sourceToTarget(dto, ProjectEntity.class);
86         String projectId = UUID.randomUUID().toString();
87         entity.setId(projectId);
88         entity.setCreateTime(new Date());
89         insert(entity);
90
91         //关联模型
92         List<MpkFileDTO> models = dto.getModels();
93         if (CollectionUtils.isNotEmpty(models)) {
423f24 94             projectModelService.create(models,projectId);
449017 95         }
D 96     }
97
98     @Override
423f24 99     @DSTransactional(rollbackFor = Exception.class)
449017 100     public void update(ProjectDTO dto) {
D 101         ProjectEntity entity = ConvertUtils.sourceToTarget(dto, ProjectEntity.class);
102         entity.setUpdateTime(new Date());
103         updateById(entity);
104
105         String projectId = dto.getId();
106         //删除关联
107         Map<String,Object> map = new HashMap<>();
108         map.put("projectId",projectId);
109         projectModelService.deleteByMap(map);
110
111         //关联模型
112         List<MpkFileDTO> models = dto.getModels();
113         if (CollectionUtils.isNotEmpty(models)) {
423f24 114             projectModelService.create(models,projectId);
449017 115         }
D 116     }
117
118     @Override
423f24 119     @DSTransactional(rollbackFor = Exception.class)
449017 120     public void delete(String id) {
0255ea 121         //删除备份文件
449017 122         Map<String,Object> map = new HashMap<>();
D 123         map.put("projectId",id);
124         List<ProjectPackageHistoryDTO> list = projectPackageHistoryService.list(map);
125         list.forEach(e -> {
126             File file = new File(e.getFilePath());
127             if (file.exists()) {
128                 file.delete();
129                 log.info("删除打包备份文件:" + e.getFilePath());
130             }
131         });
132
0255ea 133         //删除 (级联删除)
D 134         baseDao.deleteById(id);
135
136         //删除模型关联
137 //        projectModelService.deleteByMap(map);
138
449017 139         //删除打包历史
0255ea 140 //        projectPackageHistoryService.deleteByMap(map);
449017 141
D 142         //删除打包历史模型关联
0255ea 143 //        projectPackageHistoryModelService.deleteByMap(map);
449017 144     }
D 145
146     @Override
147     public PageData<MpkFileDTO> getProjectModel(Map<String, Object> params) {
148         String projectId = (String) params.get("projectId");
149
150         int total = mpkFileDao.getProjectModelCount(projectId);
151         if (total == 0) {
152             return new PageData<>(new ArrayList<>(), 0);
153         }
154         int page = Integer.parseInt((String) params.get("page"));
155         int pageSize = Integer.parseInt((String) params.get("pageSize"));
156         int offset = (page - 1)*pageSize;
157         params.put("offset",offset);
158         params.put("pageSize",pageSize);
159         List<MpkFileDTO> list =  mpkFileDao.getProjectModel(params);
160
161         return new PageData<>(list,total);
162     }
163
164     @Override
165     public QueryWrapper<ProjectEntity> getWrapper(Map<String, Object> params){
166         String id = (String)params.get("id");
167         String projectName = (String)params.get("projectName");
168
169         QueryWrapper<ProjectEntity> wrapper = new QueryWrapper<>();
170         wrapper.eq(StringUtils.isNotBlank(id), "id", id)
171                 .like(StringUtils.isNotBlank(projectName),"project_name",projectName);
172
173         return wrapper;
174     }
175
176
177 }