提交 | 用户 | 时间
7fd198 1 package com.iailab.module.model.mcs.pre.service.impl;
2
e6753e 3 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
7fd198 4 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
137356 5 import com.baomidou.mybatisplus.core.metadata.IPage;
5c6007 6 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7fd198 7 import com.iailab.framework.common.pojo.PageResult;
5c6007 8 import com.iailab.framework.common.util.object.BeanUtils;
7fd198 9 import com.iailab.module.model.mcs.pre.dao.MmPredictItemDao;
10 import com.iailab.module.model.mcs.pre.dto.MmPredictItemDTO;
11 import com.iailab.module.model.mcs.pre.entity.*;
12 import com.iailab.module.model.mcs.pre.enums.ItemIncreaseCodeEnum;
13 import com.iailab.module.model.mcs.pre.enums.ItemTypeEnum;
14 import com.iailab.module.model.mcs.pre.service.MmPredictItemService;
48c57b 15 import com.iailab.module.model.mcs.pre.service.MmSequenceNumService;
5c6007 16 import com.iailab.module.model.mcs.pre.vo.MmPredictItemPageReqVO;
137356 17 import com.iailab.module.model.mcs.pre.vo.MmPredictItemRespVO;
7fd198 18 import com.iailab.module.model.mdk.vo.ItemVO;
19 import com.iailab.module.model.mdk.vo.MergeItemVO;
19a4fb 20 import org.apache.commons.lang3.ObjectUtils;
7fd198 21 import org.apache.commons.lang3.StringUtils;
22 import org.springframework.beans.factory.annotation.Autowired;
23 import org.springframework.stereotype.Service;
24 import org.springframework.util.CollectionUtils;
25
26 import java.util.*;
27
28 /**
29  * @author PanZhibao
30  * @date 2021年04月26日 14:03
31  */
5c6007 32 @Service
L 33 public class MmPredictItemServiceImpl extends ServiceImpl<MmPredictItemDao, MmPredictItemEntity> implements MmPredictItemService {
7fd198 34
35     @Autowired
36     private DmModuleItemServiceImpl dmModuleItemService;
37
38     @Autowired
39     private MmItemOutputServiceImpl mmItemOutputService;
40
41     @Autowired
42     private MmPredictModelServiceImpl mmPredictModelService;
43
44     @Autowired
45     private MmModelArithSettingsServiceImpl mmModelArithSettingsService;
46
47     @Autowired
48     private MmModelParamServiceImpl mmModelParamService;
49
50     @Autowired
51     private MmPredictMergeItemServiceImpl mmPredictMergeItemService;
52
53     @Autowired
54     private MmItemTypeImpl mmItemTypeImpl;
55
56     @Autowired
48c57b 57     private MmSequenceNumService sequenceNumService;
7fd198 58
5c6007 59     @Autowired
L 60     private MmPredictItemDao mmPredictItemDao;
7fd198 61
91343d 62     private static HashMap<String, ItemVO> itemVOHashMap = new HashMap<>();
63
5c6007 64     @Override
137356 65     public PageResult<MmPredictItemRespVO> queryPage(MmPredictItemPageReqVO reqVO) {
66         IPage<MmPredictItemRespVO> page = mmPredictItemDao.selectPage(reqVO);
67
6d6394 68         return new PageResult<>(page.getRecords(), page.getTotal());
7fd198 69     }
5d299c 70
7fd198 71     @Override
a97b38 72     public List<MmPredictItemRespVO> list(Map<String, Object> params) {
73         return mmPredictItemDao.queryList(params);
5c6007 74     }
L 75
9f049d 76     @Override
J 77     public MmPredictItemEntity getById(String id) {
78         return  mmPredictItemDao.selectById(id);
79     }
80
22e321 81     @Override
D 82     public List<MmPredictItemRespVO> getDoubleOutPutsByItemNos(List<String> itemNos) {
153763 83         List<Integer> resultType = new ArrayList<Integer>(){{
D 84            add(3);
85         }};
86         return getOutPutsByItemNosAndResultType(itemNos,resultType);
87     }
88
89     @Override
90     public List<MmPredictItemRespVO> getArrayOutPutsByItemNos(List<String> itemNos) {
91         List<Integer> resultType = new ArrayList<Integer>(){{
92             add(1);
93             add(2);
94         }};
95         return getOutPutsByItemNosAndResultType(itemNos,resultType);
96     }
97
98     public List<MmPredictItemRespVO> getOutPutsByItemNosAndResultType(List<String> itemNos,List<Integer> resultType) {
99         if (CollectionUtils.isEmpty(itemNos) || CollectionUtils.isEmpty(resultType)) {
22e321 100             return new ArrayList<>();
D 101         }
102         Map<String, Object> params = new HashMap(1);
103         params.put("itemNos", itemNos);
153763 104         params.put("resultType", resultType);
D 105         List<MmPredictItemRespVO> list = mmPredictItemDao.getOutPutsByItemNosAndResultType(params);
22e321 106         return list;
D 107     }
108
e6753e 109     @DSTransactional(rollbackFor = Exception.class)
5c6007 110     @Override
5d299c 111     public void add(MmPredictItemDTO mmPredictItemDto) {
7fd198 112         MmPredictItemEntity predictItem = mmPredictItemDto.getMmPredictItem();
113         predictItem.setId(UUID.randomUUID().toString());
114         predictItem.setCreateTime(new Date());
115         predictItem.setUpdateTime(new Date());
116
117         MmItemTypeEntity itemType = mmItemTypeImpl.getById(predictItem.getItemtypeid());
5d299c 118         if (itemType != null && ItemTypeEnum.NORMAL_ITEM.getName().equals(itemType.getItemtypename())) {
48c57b 119             MmSequenceNumEntity sequenceNumEntity = sequenceNumService.getAndIncreaseByCode(ItemIncreaseCodeEnum.IM.toString());
7fd198 120             String str = String.format("%010d", sequenceNumEntity.getSequenceNum());
121             predictItem.setItemno(sequenceNumEntity.getPrefix() + str);
122
123             MmPredictModelEntity mmPredictModel = mmPredictItemDto.getMmPredictModel();
48c57b 124             MmSequenceNumEntity preMdlSequenceNumEntity = sequenceNumService.getAndIncreaseByCode(ItemIncreaseCodeEnum.PRE_MDL.toString());
7fd198 125             String preMdlStr = String.format("%04d", preMdlSequenceNumEntity.getSequenceNum());
126             mmPredictModel.setModelno(preMdlSequenceNumEntity.getPrefix() + preMdlStr);
127             mmPredictModel.setItemid(predictItem.getId());
128             mmPredictModelService.savePredictModel(mmPredictModel);
129
130             List<MmModelArithSettingsEntity> mmModelArithSettingsList = mmPredictItemDto.getMmModelArithSettingsList();
131             mmModelArithSettingsList.forEach(item -> {
132                 item.setModelid(mmPredictModel.getId());
133             });
134             mmModelArithSettingsService.saveList(mmModelArithSettingsList);
135
136             List<MmModelParamEntity> mmModelParamList = mmPredictItemDto.getMmModelParamList();
137             mmModelParamList.forEach(item -> {
138                 item.setModelid(mmPredictModel.getId());
139             });
140             mmModelParamService.saveList(mmModelParamList);
5d299c 141         } else if (itemType != null && ItemTypeEnum.MERGE_ITEM.getName().equals(itemType.getItemtypename())) {
48c57b 142             MmSequenceNumEntity sequenceNumEntity = sequenceNumService.getAndIncreaseByCode(ItemIncreaseCodeEnum.IC.toString());
7fd198 143             String str = String.format("%010d", sequenceNumEntity.getSequenceNum());
144             predictItem.setItemno(sequenceNumEntity.getPrefix() + str);
145
146             MmPredictMergeItemEntity mMmPredictMergeItem = mmPredictItemDto.getMmPredictMergeItem();
147             mMmPredictMergeItem.setItemid(predictItem.getId());
148             mmPredictMergeItemService.savePredictMergeItem(mMmPredictMergeItem);
b40862 149             // 添加一条默认output
D 150             List<MmItemOutputEntity> mergeItemOutput = new ArrayList<>(1);
151             MmItemOutputEntity entity = new MmItemOutputEntity();
152             entity.setPointid(mmPredictItemDto.getPointId());
153             entity.setResultName(mmPredictItemDto.getMmPredictItem().getItemname());
fde993 154             entity.setResultstr("result");
b40862 155             mergeItemOutput.add(entity);
D 156             mmPredictItemDto.setMmItemOutputList(mergeItemOutput);
7fd198 157         }
5c6007 158         mmPredictItemDao.insert(predictItem);
7fd198 159         DmModuleItemEntity dmModuleItem = mmPredictItemDto.getDmModuleItem();
160         dmModuleItem.setItemid(predictItem.getId());
161         dmModuleItemService.saveModuleItem(dmModuleItem);
162
69bd5e 163         List<MmItemOutputEntity> mmItemOutput = mmPredictItemDto.getMmItemOutputList();
D 164         mmItemOutput.forEach(e -> {
165             e.setId(UUID.randomUUID().toString());
166             e.setItemid(predictItem.getId());
167         });
7fd198 168         mmItemOutputService.saveMmItemOutput(mmItemOutput);
91343d 169
170         // 清空缓存
171         clearCatch();
5d299c 172     }
L 173
e6753e 174     @DSTransactional(rollbackFor = Exception.class)
7fd198 175     @Override
176     public void update(MmPredictItemDTO mmPredictItemDto) {
177         MmPredictItemEntity predictItem = mmPredictItemDto.getMmPredictItem();
178         predictItem.setUpdateTime(new Date());
5d299c 179         mmPredictItemDao.updateById(predictItem);
7fd198 180         MmItemTypeEntity itemType = mmItemTypeImpl.getById(predictItem.getItemtypeid());
5d299c 181         if (itemType != null && ItemTypeEnum.NORMAL_ITEM.getName().equals(itemType.getItemtypename())) {
7fd198 182             MmPredictModelEntity mmPredictModel = mmPredictItemDto.getMmPredictModel();
183             mmPredictModelService.update(mmPredictModel);
184
185             List<MmModelArithSettingsEntity> mmModelArithSettingsList = mmPredictItemDto.getMmModelArithSettingsList();
186             mmModelArithSettingsList.forEach(item -> {
187                 item.setModelid(mmPredictModel.getId());
188             });
189             mmModelArithSettingsService.saveList(mmModelArithSettingsList);
190
191             List<MmModelParamEntity> mmModelParamList = mmPredictItemDto.getMmModelParamList();
192             mmModelParamList.forEach(item -> {
193                 item.setModelid(mmPredictModel.getId());
194             });
195             mmModelParamService.saveList(mmModelParamList);
5d299c 196         } else if (itemType != null && ItemTypeEnum.MERGE_ITEM.getName().equals(itemType.getItemtypename())) {
7fd198 197             MmPredictMergeItemEntity mMmPredictMergeItem = mmPredictItemDto.getMmPredictMergeItem();
198             mmPredictMergeItemService.update(mMmPredictMergeItem);
b40862 199             // 修改默认output
fde993 200             List<MmItemOutputEntity> mmItemOutputList = mmPredictItemDto.getMmItemOutputList();
D 201             if (CollectionUtils.isEmpty(mmItemOutputList)) {
202                 mmItemOutputList = new ArrayList<>(1);
203                 MmItemOutputEntity entity = new MmItemOutputEntity();
204                 entity.setPointid(mmPredictItemDto.getPointId());
205                 entity.setResultName(mmPredictItemDto.getMmPredictItem().getItemname());
206                 entity.setResultstr("result");
207                 mmItemOutputList.add(entity);
208                 mmPredictItemDto.setMmItemOutputList(mmItemOutputList);
209             } else {
210                 mmPredictItemDto.getMmItemOutputList().forEach(e -> e.setPointid(mmPredictItemDto.getPointId()));
211             }
7fd198 212         }
213         DmModuleItemEntity dmModuleItem = mmPredictItemDto.getDmModuleItem();
e6753e 214         if (!"".equals(dmModuleItem.getId()) && dmModuleItem.getId() != null) {
5d299c 215             dmModuleItemService.update(dmModuleItem);
L 216         }
69bd5e 217         mmItemOutputService.deleteByItemId(predictItem.getId());
D 218         List<MmItemOutputEntity> mmItemOutput = mmPredictItemDto.getMmItemOutputList();
19a4fb 219         if (!CollectionUtils.isEmpty(mmItemOutput)) {
D 220             mmItemOutput.forEach(e -> {
221                 // 尽量保存原有id
222                 if (StringUtils.isBlank(e.getId())) {
223                     e.setId(UUID.randomUUID().toString());
224                 }
225                 e.setItemid(predictItem.getId());
226             });
227             mmItemOutputService.saveMmItemOutput(mmItemOutput);
228         }
229
91343d 230
231         // 清空缓存
232         clearCatch();
5d299c 233     }
L 234
e6753e 235     @DSTransactional(rollbackFor = Exception.class)
7fd198 236     @Override
237     public void deleteBatch(String[] itemIds) {
5c6007 238         mmPredictItemDao.deleteBatchIds(Arrays.asList(itemIds));
7fd198 239         mmPredictMergeItemService.deleteBatch(itemIds);
240         mmPredictModelService.deleteBatch(itemIds);
241         mmItemOutputService.deleteBatch(itemIds);
91343d 242
243         // 清空缓存
244         clearCatch();
7fd198 245     }
246
247     @Override
5c6007 248     public MmPredictItemDTO info(String id) {
L 249         MmPredictItemEntity predictItem = mmPredictItemDao.selectById(id);
250         MmPredictItemDTO mmPredictItemDto = BeanUtils.toBean(predictItem, MmPredictItemDTO.class);
7fd198 251         mmPredictItemDto.setMmPredictItem(predictItem);
252         mmPredictItemDto.setDmModuleItem(dmModuleItemService.getByItemid(id));
69bd5e 253         mmPredictItemDto.setMmItemOutputList(mmItemOutputService.getByItemid(id));
7fd198 254         MmItemTypeEntity itemType = mmItemTypeImpl.getById(predictItem.getItemtypeid());
5d299c 255         if (itemType != null && ItemTypeEnum.NORMAL_ITEM.getName().equals(itemType.getItemtypename())) {
7fd198 256             MmPredictModelEntity mmPredictModel = mmPredictModelService.getByItemid(id);
257             mmPredictItemDto.setMmPredictModel(mmPredictModel);
214275 258             mmPredictItemDto.setMmModelArithSettingsList(mmModelArithSettingsService.getByModelId(mmPredictModel.getId()));
7fd198 259             mmPredictItemDto.setMmModelParamList(mmModelParamService.getByModelid(mmPredictModel.getId()));
e6753e 260             mmPredictItemDto.setMmPredictMergeItem(new MmPredictMergeItemEntity());
5d299c 261         } else if (itemType != null && ItemTypeEnum.MERGE_ITEM.getName().equals(itemType.getItemtypename())) {
7800dd 262             mmPredictItemDto.setMmPredictModel(new MmPredictModelEntity());
263             mmPredictItemDto.setMmModelArithSettingsList(new ArrayList<>());
264             mmPredictItemDto.setMmModelParamList(new ArrayList<>());
265             mmPredictItemDto.setMmPredictMergeItem(new MmPredictMergeItemEntity());
7fd198 266             mmPredictItemDto.setMmPredictMergeItem(mmPredictMergeItemService.getByItemid(id));
b40862 267             if (!CollectionUtils.isEmpty(mmPredictItemDto.getMmItemOutputList())) {
D 268                 mmPredictItemDto.setPointId(mmPredictItemDto.getMmItemOutputList().get(0).getPointid());
269             }
7fd198 270         }
271         return mmPredictItemDto;
272     }
273
274     @Override
275     public int check(MmPredictItemEntity mmPredictItem) {
276         String id = mmPredictItem.getId();
277         String itemname = mmPredictItem.getItemname();
278         String itemno = mmPredictItem.getItemno();
279         QueryWrapper<MmPredictItemEntity> queryWrapper = new QueryWrapper<>();
280         queryWrapper.ne(StringUtils.isNotBlank(id), "id", id);
281         queryWrapper.and(wrapper -> wrapper.eq("itemname", itemname).or().eq("itemno", itemno));
5c6007 282         List<MmPredictItemEntity> list = mmPredictItemDao.selectList(queryWrapper);
7fd198 283         return list.size();
284     }
285
286     @Override
287     public List<ItemVO> getByModuleId(String moduleId) {
288         Map<String, Object> params = new HashMap<>();
1a2b62 289         params.put("MODULEID",moduleId);
5c6007 290         return mmPredictItemDao.getByModuleId(params);
7fd198 291     }
292
293     @Override
294     public ItemVO getItemByItemNo(String itemNo) {
295         if (StringUtils.isBlank(itemNo)) {
296             return null;
297         }
298         Map<String, Object> params = new HashMap(1);
299         params.put("ITEMNO", itemNo);
5c6007 300         List<ItemVO> list = mmPredictItemDao.getItem(params);
7fd198 301         if (CollectionUtils.isEmpty(list)) {
302             return null;
303         }
304         return list.get(0);
305     }
306
307     @Override
91343d 308     public void clearCatch() {
309         itemVOHashMap.clear();
310     }
311
312     @Override
b82ba2 313     public ItemVO getItemByIdFromCache(String itemId) {
7fd198 314         if (StringUtils.isBlank(itemId)) {
315             return null;
316         }
91343d 317         if (!itemVOHashMap.containsKey(itemId)) {
318             Map<String, Object> params = new HashMap<>(1);
319             params.put("ITEMID", itemId);
320             List<ItemVO> list = mmPredictItemDao.getItem(params);
321             if (CollectionUtils.isEmpty(list)) {
322                 return null;
323             }
324             itemVOHashMap.put(itemId, list.get(0));
7fd198 325         }
91343d 326         return itemVOHashMap.get(itemId);
7fd198 327     }
328
329     @Override
b82ba2 330     public ItemVO getItemById(String itemId) {
D 331         Map<String, Object> params = new HashMap<>(1);
332         params.put("ITEMID", itemId);
333         List<ItemVO> list = mmPredictItemDao.getItem(params);
334         if (CollectionUtils.isEmpty(list)) {
335             return null;
336         }
337         return list.get(0);
338     }
339
340     @Override
19a4fb 341     public ItemVO getItemByOutPutId(String outPutId) {
D 342         if (StringUtils.isBlank(outPutId)) {
343             return null;
344         }
345         MmItemOutputEntity outPutById = mmItemOutputService.getOutPutById(outPutId);
346         if (ObjectUtils.isEmpty(outPutById)) {
347             return null;
348         }
349         String itemId = outPutById.getItemid();
b82ba2 350         return getItemByIdFromCache(itemId);
19a4fb 351     }
D 352
353     @Override
7fd198 354     public MergeItemVO getMergeItemByItemId(String itemId) {
355         if (StringUtils.isBlank(itemId)) {
356             return null;
357         }
358         Map<String, Object> params = new HashMap(1);
359         params.put("ITEMID", itemId);
5c6007 360         List<MergeItemVO> list = mmPredictItemDao.getMergeItemByItemId(params);
7fd198 361         if (CollectionUtils.isEmpty(list)) {
362             return null;
363         }
364         return list.get(0);
365     }
366 }