liriming
2025-01-14 0809aa554fc906e73a383c34f88bb4153bb69b00
提交 | 用户 | 时间
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) {
83         if (CollectionUtils.isEmpty(itemNos)) {
84             return new ArrayList<>();
85         }
86         Map<String, Object> params = new HashMap(1);
87         params.put("itemNos", itemNos);
88         List<MmPredictItemRespVO> list = mmPredictItemDao.getDoubleOutPutsByItemNos(params);
89         return list;
90     }
91
e6753e 92     @DSTransactional(rollbackFor = Exception.class)
5c6007 93     @Override
5d299c 94     public void add(MmPredictItemDTO mmPredictItemDto) {
7fd198 95         MmPredictItemEntity predictItem = mmPredictItemDto.getMmPredictItem();
96         predictItem.setId(UUID.randomUUID().toString());
97         predictItem.setCreateTime(new Date());
98         predictItem.setUpdateTime(new Date());
99
100         MmItemTypeEntity itemType = mmItemTypeImpl.getById(predictItem.getItemtypeid());
5d299c 101         if (itemType != null && ItemTypeEnum.NORMAL_ITEM.getName().equals(itemType.getItemtypename())) {
48c57b 102             MmSequenceNumEntity sequenceNumEntity = sequenceNumService.getAndIncreaseByCode(ItemIncreaseCodeEnum.IM.toString());
7fd198 103             String str = String.format("%010d", sequenceNumEntity.getSequenceNum());
104             predictItem.setItemno(sequenceNumEntity.getPrefix() + str);
105
106             MmPredictModelEntity mmPredictModel = mmPredictItemDto.getMmPredictModel();
48c57b 107             MmSequenceNumEntity preMdlSequenceNumEntity = sequenceNumService.getAndIncreaseByCode(ItemIncreaseCodeEnum.PRE_MDL.toString());
7fd198 108             String preMdlStr = String.format("%04d", preMdlSequenceNumEntity.getSequenceNum());
109             mmPredictModel.setModelno(preMdlSequenceNumEntity.getPrefix() + preMdlStr);
110             mmPredictModel.setItemid(predictItem.getId());
111             mmPredictModelService.savePredictModel(mmPredictModel);
112
113             List<MmModelArithSettingsEntity> mmModelArithSettingsList = mmPredictItemDto.getMmModelArithSettingsList();
114             mmModelArithSettingsList.forEach(item -> {
115                 item.setModelid(mmPredictModel.getId());
116             });
117             mmModelArithSettingsService.saveList(mmModelArithSettingsList);
118
119             List<MmModelParamEntity> mmModelParamList = mmPredictItemDto.getMmModelParamList();
120             mmModelParamList.forEach(item -> {
121                 item.setModelid(mmPredictModel.getId());
122             });
123             mmModelParamService.saveList(mmModelParamList);
5d299c 124         } else if (itemType != null && ItemTypeEnum.MERGE_ITEM.getName().equals(itemType.getItemtypename())) {
48c57b 125             MmSequenceNumEntity sequenceNumEntity = sequenceNumService.getAndIncreaseByCode(ItemIncreaseCodeEnum.IC.toString());
7fd198 126             String str = String.format("%010d", sequenceNumEntity.getSequenceNum());
127             predictItem.setItemno(sequenceNumEntity.getPrefix() + str);
128
129             MmPredictMergeItemEntity mMmPredictMergeItem = mmPredictItemDto.getMmPredictMergeItem();
130             mMmPredictMergeItem.setItemid(predictItem.getId());
131             mmPredictMergeItemService.savePredictMergeItem(mMmPredictMergeItem);
b40862 132             // 添加一条默认output
D 133             List<MmItemOutputEntity> mergeItemOutput = new ArrayList<>(1);
134             MmItemOutputEntity entity = new MmItemOutputEntity();
135             entity.setPointid(mmPredictItemDto.getPointId());
136             entity.setResultName(mmPredictItemDto.getMmPredictItem().getItemname());
fde993 137             entity.setResultstr("result");
b40862 138             mergeItemOutput.add(entity);
D 139             mmPredictItemDto.setMmItemOutputList(mergeItemOutput);
7fd198 140         }
5c6007 141         mmPredictItemDao.insert(predictItem);
7fd198 142         DmModuleItemEntity dmModuleItem = mmPredictItemDto.getDmModuleItem();
143         dmModuleItem.setItemid(predictItem.getId());
144         dmModuleItemService.saveModuleItem(dmModuleItem);
145
69bd5e 146         List<MmItemOutputEntity> mmItemOutput = mmPredictItemDto.getMmItemOutputList();
D 147         mmItemOutput.forEach(e -> {
148             e.setId(UUID.randomUUID().toString());
149             e.setItemid(predictItem.getId());
150         });
7fd198 151         mmItemOutputService.saveMmItemOutput(mmItemOutput);
91343d 152
153         // 清空缓存
154         clearCatch();
5d299c 155     }
L 156
e6753e 157     @DSTransactional(rollbackFor = Exception.class)
7fd198 158     @Override
159     public void update(MmPredictItemDTO mmPredictItemDto) {
160         MmPredictItemEntity predictItem = mmPredictItemDto.getMmPredictItem();
161         predictItem.setUpdateTime(new Date());
5d299c 162         mmPredictItemDao.updateById(predictItem);
7fd198 163         MmItemTypeEntity itemType = mmItemTypeImpl.getById(predictItem.getItemtypeid());
5d299c 164         if (itemType != null && ItemTypeEnum.NORMAL_ITEM.getName().equals(itemType.getItemtypename())) {
7fd198 165             MmPredictModelEntity mmPredictModel = mmPredictItemDto.getMmPredictModel();
166             mmPredictModelService.update(mmPredictModel);
167
168             List<MmModelArithSettingsEntity> mmModelArithSettingsList = mmPredictItemDto.getMmModelArithSettingsList();
169             mmModelArithSettingsList.forEach(item -> {
170                 item.setModelid(mmPredictModel.getId());
171             });
172             mmModelArithSettingsService.saveList(mmModelArithSettingsList);
173
174             List<MmModelParamEntity> mmModelParamList = mmPredictItemDto.getMmModelParamList();
175             mmModelParamList.forEach(item -> {
176                 item.setModelid(mmPredictModel.getId());
177             });
178             mmModelParamService.saveList(mmModelParamList);
5d299c 179         } else if (itemType != null && ItemTypeEnum.MERGE_ITEM.getName().equals(itemType.getItemtypename())) {
7fd198 180             MmPredictMergeItemEntity mMmPredictMergeItem = mmPredictItemDto.getMmPredictMergeItem();
181             mmPredictMergeItemService.update(mMmPredictMergeItem);
b40862 182             // 修改默认output
fde993 183             List<MmItemOutputEntity> mmItemOutputList = mmPredictItemDto.getMmItemOutputList();
D 184             if (CollectionUtils.isEmpty(mmItemOutputList)) {
185                 mmItemOutputList = new ArrayList<>(1);
186                 MmItemOutputEntity entity = new MmItemOutputEntity();
187                 entity.setPointid(mmPredictItemDto.getPointId());
188                 entity.setResultName(mmPredictItemDto.getMmPredictItem().getItemname());
189                 entity.setResultstr("result");
190                 mmItemOutputList.add(entity);
191                 mmPredictItemDto.setMmItemOutputList(mmItemOutputList);
192             } else {
193                 mmPredictItemDto.getMmItemOutputList().forEach(e -> e.setPointid(mmPredictItemDto.getPointId()));
194             }
7fd198 195         }
196         DmModuleItemEntity dmModuleItem = mmPredictItemDto.getDmModuleItem();
e6753e 197         if (!"".equals(dmModuleItem.getId()) && dmModuleItem.getId() != null) {
5d299c 198             dmModuleItemService.update(dmModuleItem);
L 199         }
69bd5e 200         mmItemOutputService.deleteByItemId(predictItem.getId());
D 201         List<MmItemOutputEntity> mmItemOutput = mmPredictItemDto.getMmItemOutputList();
19a4fb 202         if (!CollectionUtils.isEmpty(mmItemOutput)) {
D 203             mmItemOutput.forEach(e -> {
204                 // 尽量保存原有id
205                 if (StringUtils.isBlank(e.getId())) {
206                     e.setId(UUID.randomUUID().toString());
207                 }
208                 e.setItemid(predictItem.getId());
209             });
210             mmItemOutputService.saveMmItemOutput(mmItemOutput);
211         }
212
91343d 213
214         // 清空缓存
215         clearCatch();
5d299c 216     }
L 217
e6753e 218     @DSTransactional(rollbackFor = Exception.class)
7fd198 219     @Override
220     public void deleteBatch(String[] itemIds) {
5c6007 221         mmPredictItemDao.deleteBatchIds(Arrays.asList(itemIds));
7fd198 222         mmPredictMergeItemService.deleteBatch(itemIds);
223         mmPredictModelService.deleteBatch(itemIds);
224         mmItemOutputService.deleteBatch(itemIds);
91343d 225
226         // 清空缓存
227         clearCatch();
7fd198 228     }
229
230     @Override
5c6007 231     public MmPredictItemDTO info(String id) {
L 232         MmPredictItemEntity predictItem = mmPredictItemDao.selectById(id);
233         MmPredictItemDTO mmPredictItemDto = BeanUtils.toBean(predictItem, MmPredictItemDTO.class);
7fd198 234         mmPredictItemDto.setMmPredictItem(predictItem);
235         mmPredictItemDto.setDmModuleItem(dmModuleItemService.getByItemid(id));
69bd5e 236         mmPredictItemDto.setMmItemOutputList(mmItemOutputService.getByItemid(id));
7fd198 237         MmItemTypeEntity itemType = mmItemTypeImpl.getById(predictItem.getItemtypeid());
5d299c 238         if (itemType != null && ItemTypeEnum.NORMAL_ITEM.getName().equals(itemType.getItemtypename())) {
7fd198 239             MmPredictModelEntity mmPredictModel = mmPredictModelService.getByItemid(id);
240             mmPredictItemDto.setMmPredictModel(mmPredictModel);
214275 241             mmPredictItemDto.setMmModelArithSettingsList(mmModelArithSettingsService.getByModelId(mmPredictModel.getId()));
7fd198 242             mmPredictItemDto.setMmModelParamList(mmModelParamService.getByModelid(mmPredictModel.getId()));
e6753e 243             mmPredictItemDto.setMmPredictMergeItem(new MmPredictMergeItemEntity());
5d299c 244         } else if (itemType != null && ItemTypeEnum.MERGE_ITEM.getName().equals(itemType.getItemtypename())) {
7800dd 245             mmPredictItemDto.setMmPredictModel(new MmPredictModelEntity());
246             mmPredictItemDto.setMmModelArithSettingsList(new ArrayList<>());
247             mmPredictItemDto.setMmModelParamList(new ArrayList<>());
248             mmPredictItemDto.setMmPredictMergeItem(new MmPredictMergeItemEntity());
7fd198 249             mmPredictItemDto.setMmPredictMergeItem(mmPredictMergeItemService.getByItemid(id));
b40862 250             if (!CollectionUtils.isEmpty(mmPredictItemDto.getMmItemOutputList())) {
D 251                 mmPredictItemDto.setPointId(mmPredictItemDto.getMmItemOutputList().get(0).getPointid());
252             }
7fd198 253         }
254         return mmPredictItemDto;
255     }
256
257     @Override
258     public int check(MmPredictItemEntity mmPredictItem) {
259         String id = mmPredictItem.getId();
260         String itemname = mmPredictItem.getItemname();
261         String itemno = mmPredictItem.getItemno();
262         QueryWrapper<MmPredictItemEntity> queryWrapper = new QueryWrapper<>();
263         queryWrapper.ne(StringUtils.isNotBlank(id), "id", id);
264         queryWrapper.and(wrapper -> wrapper.eq("itemname", itemname).or().eq("itemno", itemno));
5c6007 265         List<MmPredictItemEntity> list = mmPredictItemDao.selectList(queryWrapper);
7fd198 266         return list.size();
267     }
268
269     @Override
270     public List<ItemVO> getByModuleId(String moduleId) {
271         Map<String, Object> params = new HashMap<>();
1a2b62 272         params.put("MODULEID",moduleId);
5c6007 273         return mmPredictItemDao.getByModuleId(params);
7fd198 274     }
275
276     @Override
277     public ItemVO getItemByItemNo(String itemNo) {
278         if (StringUtils.isBlank(itemNo)) {
279             return null;
280         }
281         Map<String, Object> params = new HashMap(1);
282         params.put("ITEMNO", itemNo);
5c6007 283         List<ItemVO> list = mmPredictItemDao.getItem(params);
7fd198 284         if (CollectionUtils.isEmpty(list)) {
285             return null;
286         }
287         return list.get(0);
288     }
289
290     @Override
91343d 291     public void clearCatch() {
292         itemVOHashMap.clear();
293     }
294
295     @Override
b82ba2 296     public ItemVO getItemByIdFromCache(String itemId) {
7fd198 297         if (StringUtils.isBlank(itemId)) {
298             return null;
299         }
91343d 300         if (!itemVOHashMap.containsKey(itemId)) {
301             Map<String, Object> params = new HashMap<>(1);
302             params.put("ITEMID", itemId);
303             List<ItemVO> list = mmPredictItemDao.getItem(params);
304             if (CollectionUtils.isEmpty(list)) {
305                 return null;
306             }
307             itemVOHashMap.put(itemId, list.get(0));
7fd198 308         }
91343d 309         return itemVOHashMap.get(itemId);
7fd198 310     }
311
312     @Override
b82ba2 313     public ItemVO getItemById(String itemId) {
D 314         Map<String, Object> params = new HashMap<>(1);
315         params.put("ITEMID", itemId);
316         List<ItemVO> list = mmPredictItemDao.getItem(params);
317         if (CollectionUtils.isEmpty(list)) {
318             return null;
319         }
320         return list.get(0);
321     }
322
323     @Override
19a4fb 324     public ItemVO getItemByOutPutId(String outPutId) {
D 325         if (StringUtils.isBlank(outPutId)) {
326             return null;
327         }
328         MmItemOutputEntity outPutById = mmItemOutputService.getOutPutById(outPutId);
329         if (ObjectUtils.isEmpty(outPutById)) {
330             return null;
331         }
332         String itemId = outPutById.getItemid();
b82ba2 333         return getItemByIdFromCache(itemId);
19a4fb 334     }
D 335
336     @Override
7fd198 337     public MergeItemVO getMergeItemByItemId(String itemId) {
338         if (StringUtils.isBlank(itemId)) {
339             return null;
340         }
341         Map<String, Object> params = new HashMap(1);
342         params.put("ITEMID", itemId);
5c6007 343         List<MergeItemVO> list = mmPredictItemDao.getMergeItemByItemId(params);
7fd198 344         if (CollectionUtils.isEmpty(list)) {
345             return null;
346         }
347         return list.get(0);
348     }
349 }