潘志宝
2025-02-12 5131f1810e63457d2cf21cfb2824198c5b90c6f6
提交 | 用户 | 时间
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();
5131f1 178         predictItem.setCumulpoint(predictItem.getCumulpoint() == null? "" : predictItem.getCumulpoint());
7fd198 179         predictItem.setUpdateTime(new Date());
5d299c 180         mmPredictItemDao.updateById(predictItem);
7fd198 181         MmItemTypeEntity itemType = mmItemTypeImpl.getById(predictItem.getItemtypeid());
5d299c 182         if (itemType != null && ItemTypeEnum.NORMAL_ITEM.getName().equals(itemType.getItemtypename())) {
7fd198 183             MmPredictModelEntity mmPredictModel = mmPredictItemDto.getMmPredictModel();
184             mmPredictModelService.update(mmPredictModel);
185
186             List<MmModelArithSettingsEntity> mmModelArithSettingsList = mmPredictItemDto.getMmModelArithSettingsList();
187             mmModelArithSettingsList.forEach(item -> {
188                 item.setModelid(mmPredictModel.getId());
189             });
190             mmModelArithSettingsService.saveList(mmModelArithSettingsList);
191
192             List<MmModelParamEntity> mmModelParamList = mmPredictItemDto.getMmModelParamList();
193             mmModelParamList.forEach(item -> {
194                 item.setModelid(mmPredictModel.getId());
195             });
196             mmModelParamService.saveList(mmModelParamList);
5d299c 197         } else if (itemType != null && ItemTypeEnum.MERGE_ITEM.getName().equals(itemType.getItemtypename())) {
7fd198 198             MmPredictMergeItemEntity mMmPredictMergeItem = mmPredictItemDto.getMmPredictMergeItem();
199             mmPredictMergeItemService.update(mMmPredictMergeItem);
b40862 200             // 修改默认output
fde993 201             List<MmItemOutputEntity> mmItemOutputList = mmPredictItemDto.getMmItemOutputList();
D 202             if (CollectionUtils.isEmpty(mmItemOutputList)) {
203                 mmItemOutputList = new ArrayList<>(1);
204                 MmItemOutputEntity entity = new MmItemOutputEntity();
205                 entity.setPointid(mmPredictItemDto.getPointId());
206                 entity.setResultName(mmPredictItemDto.getMmPredictItem().getItemname());
207                 entity.setResultstr("result");
208                 mmItemOutputList.add(entity);
209                 mmPredictItemDto.setMmItemOutputList(mmItemOutputList);
210             } else {
211                 mmPredictItemDto.getMmItemOutputList().forEach(e -> e.setPointid(mmPredictItemDto.getPointId()));
212             }
7fd198 213         }
214         DmModuleItemEntity dmModuleItem = mmPredictItemDto.getDmModuleItem();
e6753e 215         if (!"".equals(dmModuleItem.getId()) && dmModuleItem.getId() != null) {
5d299c 216             dmModuleItemService.update(dmModuleItem);
L 217         }
69bd5e 218         mmItemOutputService.deleteByItemId(predictItem.getId());
D 219         List<MmItemOutputEntity> mmItemOutput = mmPredictItemDto.getMmItemOutputList();
19a4fb 220         if (!CollectionUtils.isEmpty(mmItemOutput)) {
D 221             mmItemOutput.forEach(e -> {
222                 // 尽量保存原有id
223                 if (StringUtils.isBlank(e.getId())) {
224                     e.setId(UUID.randomUUID().toString());
225                 }
226                 e.setItemid(predictItem.getId());
227             });
228             mmItemOutputService.saveMmItemOutput(mmItemOutput);
229         }
230
91343d 231
232         // 清空缓存
233         clearCatch();
5d299c 234     }
L 235
e6753e 236     @DSTransactional(rollbackFor = Exception.class)
7fd198 237     @Override
238     public void deleteBatch(String[] itemIds) {
5c6007 239         mmPredictItemDao.deleteBatchIds(Arrays.asList(itemIds));
7fd198 240         mmPredictMergeItemService.deleteBatch(itemIds);
241         mmPredictModelService.deleteBatch(itemIds);
242         mmItemOutputService.deleteBatch(itemIds);
91343d 243
244         // 清空缓存
245         clearCatch();
7fd198 246     }
247
248     @Override
5c6007 249     public MmPredictItemDTO info(String id) {
L 250         MmPredictItemEntity predictItem = mmPredictItemDao.selectById(id);
251         MmPredictItemDTO mmPredictItemDto = BeanUtils.toBean(predictItem, MmPredictItemDTO.class);
7fd198 252         mmPredictItemDto.setMmPredictItem(predictItem);
253         mmPredictItemDto.setDmModuleItem(dmModuleItemService.getByItemid(id));
69bd5e 254         mmPredictItemDto.setMmItemOutputList(mmItemOutputService.getByItemid(id));
7fd198 255         MmItemTypeEntity itemType = mmItemTypeImpl.getById(predictItem.getItemtypeid());
5d299c 256         if (itemType != null && ItemTypeEnum.NORMAL_ITEM.getName().equals(itemType.getItemtypename())) {
7fd198 257             MmPredictModelEntity mmPredictModel = mmPredictModelService.getByItemid(id);
258             mmPredictItemDto.setMmPredictModel(mmPredictModel);
214275 259             mmPredictItemDto.setMmModelArithSettingsList(mmModelArithSettingsService.getByModelId(mmPredictModel.getId()));
7fd198 260             mmPredictItemDto.setMmModelParamList(mmModelParamService.getByModelid(mmPredictModel.getId()));
e6753e 261             mmPredictItemDto.setMmPredictMergeItem(new MmPredictMergeItemEntity());
5d299c 262         } else if (itemType != null && ItemTypeEnum.MERGE_ITEM.getName().equals(itemType.getItemtypename())) {
7800dd 263             mmPredictItemDto.setMmPredictModel(new MmPredictModelEntity());
264             mmPredictItemDto.setMmModelArithSettingsList(new ArrayList<>());
265             mmPredictItemDto.setMmModelParamList(new ArrayList<>());
266             mmPredictItemDto.setMmPredictMergeItem(new MmPredictMergeItemEntity());
7fd198 267             mmPredictItemDto.setMmPredictMergeItem(mmPredictMergeItemService.getByItemid(id));
b40862 268             if (!CollectionUtils.isEmpty(mmPredictItemDto.getMmItemOutputList())) {
D 269                 mmPredictItemDto.setPointId(mmPredictItemDto.getMmItemOutputList().get(0).getPointid());
270             }
7fd198 271         }
272         return mmPredictItemDto;
273     }
274
275     @Override
276     public int check(MmPredictItemEntity mmPredictItem) {
277         String id = mmPredictItem.getId();
278         String itemname = mmPredictItem.getItemname();
279         String itemno = mmPredictItem.getItemno();
280         QueryWrapper<MmPredictItemEntity> queryWrapper = new QueryWrapper<>();
281         queryWrapper.ne(StringUtils.isNotBlank(id), "id", id);
282         queryWrapper.and(wrapper -> wrapper.eq("itemname", itemname).or().eq("itemno", itemno));
5c6007 283         List<MmPredictItemEntity> list = mmPredictItemDao.selectList(queryWrapper);
7fd198 284         return list.size();
285     }
286
287     @Override
288     public List<ItemVO> getByModuleId(String moduleId) {
289         Map<String, Object> params = new HashMap<>();
1a2b62 290         params.put("MODULEID",moduleId);
5c6007 291         return mmPredictItemDao.getByModuleId(params);
7fd198 292     }
293
294     @Override
295     public ItemVO getItemByItemNo(String itemNo) {
296         if (StringUtils.isBlank(itemNo)) {
297             return null;
298         }
299         Map<String, Object> params = new HashMap(1);
300         params.put("ITEMNO", itemNo);
5c6007 301         List<ItemVO> list = mmPredictItemDao.getItem(params);
7fd198 302         if (CollectionUtils.isEmpty(list)) {
303             return null;
304         }
305         return list.get(0);
306     }
307
308     @Override
91343d 309     public void clearCatch() {
310         itemVOHashMap.clear();
311     }
312
313     @Override
b82ba2 314     public ItemVO getItemByIdFromCache(String itemId) {
7fd198 315         if (StringUtils.isBlank(itemId)) {
316             return null;
317         }
91343d 318         if (!itemVOHashMap.containsKey(itemId)) {
319             Map<String, Object> params = new HashMap<>(1);
320             params.put("ITEMID", itemId);
321             List<ItemVO> list = mmPredictItemDao.getItem(params);
322             if (CollectionUtils.isEmpty(list)) {
323                 return null;
324             }
325             itemVOHashMap.put(itemId, list.get(0));
7fd198 326         }
91343d 327         return itemVOHashMap.get(itemId);
7fd198 328     }
329
330     @Override
b82ba2 331     public ItemVO getItemById(String itemId) {
D 332         Map<String, Object> params = new HashMap<>(1);
333         params.put("ITEMID", itemId);
334         List<ItemVO> list = mmPredictItemDao.getItem(params);
335         if (CollectionUtils.isEmpty(list)) {
336             return null;
337         }
338         return list.get(0);
339     }
340
341     @Override
19a4fb 342     public ItemVO getItemByOutPutId(String outPutId) {
D 343         if (StringUtils.isBlank(outPutId)) {
344             return null;
345         }
346         MmItemOutputEntity outPutById = mmItemOutputService.getOutPutById(outPutId);
347         if (ObjectUtils.isEmpty(outPutById)) {
348             return null;
349         }
350         String itemId = outPutById.getItemid();
b82ba2 351         return getItemByIdFromCache(itemId);
19a4fb 352     }
D 353
354     @Override
7fd198 355     public MergeItemVO getMergeItemByItemId(String itemId) {
356         if (StringUtils.isBlank(itemId)) {
357             return null;
358         }
359         Map<String, Object> params = new HashMap(1);
360         params.put("ITEMID", itemId);
5c6007 361         List<MergeItemVO> list = mmPredictItemDao.getMergeItemByItemId(params);
7fd198 362         if (CollectionUtils.isEmpty(list)) {
363             return null;
364         }
365         return list.get(0);
366     }
367 }