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