123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- package com.persagy.proxy.object.controller;
- import cn.hutool.core.collection.CollUtil;
- import cn.hutool.core.map.MapUtil;
- import cn.hutool.core.util.IdUtil;
- import cn.hutool.core.util.StrUtil;
- import com.persagy.proxy.adm.constant.AdmDictCategoryEnum;
- import com.persagy.proxy.adm.request.AdmCreateRequest;
- import com.persagy.proxy.adm.request.AdmQueryCriteria;
- import com.persagy.proxy.adm.request.AdmResponse;
- import com.persagy.proxy.adm.utils.AdmContextUtil;
- import com.persagy.proxy.adm.utils.ObjectNameUtil;
- import com.persagy.proxy.dictionary.model.AdmDict;
- import com.persagy.proxy.dictionary.model.AdmObjectType;
- import com.persagy.proxy.dictionary.service.IAdmDictService;
- import com.persagy.proxy.object.model.AdmComponent;
- import com.persagy.proxy.object.service.IAdmComponentService;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import javax.ws.rs.QueryParam;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * Adm 部件 API
- * @author lvxy
- * @date 2021/8/16
- */
- @Slf4j
- @RestController
- @RequestMapping("/object/component")
- public class AdmComponentController {
- @Autowired
- private IAdmComponentService service;
- @Autowired
- private IAdmDictService dictService;
- /**
- * 统计
- * @param request
- * @return
- * @throws Exception
- */
- @PostMapping("/count")
- public AdmResponse count(@RequestBody AdmQueryCriteria request) throws Exception {
- request.setName(AdmComponent.OBJ_TYPE);
- request.setOnlyCount(true);
- return service.doQuery(AdmContextUtil.toDmpContext(), request, AdmComponent.class);
- }
- /**
- * 创建
- * @param createRequest
- * @return
- * @throws Exception
- */
- @PostMapping("/create")
- public AdmResponse create(@RequestBody AdmCreateRequest<AdmComponent> createRequest, @QueryParam("projectId") String projectId) throws Exception {
- List<AdmComponent> vos = CollUtil.newArrayList(createRequest.getContent());
- if(CollUtil.isEmpty(vos)){
- return AdmResponse.success();
- }
- // 查询所有设备类型
- AdmDict dictCond = AdmDict.builder().type(AdmDictCategoryEnum.COMPONENT.getValue()).build();
- AdmResponse dictResponse = dictService.queryCategory(AdmContextUtil.toDmpContext(), dictCond, AdmObjectType.class);
- List<AdmObjectType> dicts = (List<AdmObjectType>) dictResponse.getContent();
- // 转换为Map,key为编码后4位。用于适配旧类型编码
- Map<String, AdmObjectType> shortDictMap = new HashMap<>();
- Map<String, AdmObjectType> fullDictMap = new HashMap<>();
- for(int i = 0,j = CollUtil.size(dicts);i < j;i++) {
- AdmObjectType dict = dicts.get(i);
- shortDictMap.put(StrUtil.subSufByLength(dict.getCode(), 6), dict);
- fullDictMap.put(dict.getCode(), dict);
- }
- // 设备属性调整
- List<AdmComponent> filterVOs = new ArrayList<>();
- for(AdmComponent component:vos) {
- // 如果不是Eq开头,则重新生成ID
- if(StrUtil.startWith(component.getId(), "Ec")) {
- component.setId("Ec"+ IdUtil.simpleUUID());
- }
- // 类型编码适配
- String classCode = component.getClassCode();
- // 如果编码为空,或在4位、6位里都不存在,则报错
- if(StrUtil.isBlank(classCode) ||
- (shortDictMap.get(classCode) == null && fullDictMap.get(classCode) == null)) {
- log.error(StrUtil.format("没有找到对象类型【{}】!", component.getClassCode()));
- continue;
- }
- filterVOs.add(component);
- // 如果少于6位,则需要适配新编码
- if(classCode.length() < 8) {
- AdmObjectType dict = MapUtil.get(shortDictMap, classCode, AdmObjectType.class);
- component.setClassCode(dict.getCode());
- }
- // 如果名称为空,则提供默认名称
- if (StrUtil.isEmpty(component.getName())){
- AdmObjectType dict = MapUtil.get(fullDictMap, component.getClassCode(), AdmObjectType.class);
- String preName = dict == null ? "部件" : dict.getName();
- component.setName(ObjectNameUtil.objectName(preName + "-"));
- }
- }
- if(CollUtil.isEmpty(filterVOs)){
- return AdmResponse.success();
- }
- filterVOs = service.doInsert(AdmContextUtil.toDmpContext(), AdmComponent.class, filterVOs);
- return AdmResponse.success(filterVOs);
- }
- /**
- * 根据ID删除
- * @param vos
- * @return
- * @throws Exception
- */
- @PostMapping("/delete")
- public AdmResponse delete( @RequestBody List<AdmComponent> vos) throws Exception {
- service.doDelete(AdmContextUtil.toDmpContext(), vos);
- return AdmResponse.success();
- }
- /**
- * 更新
- * @param createRequest
- * @return
- * @throws Exception
- */
- @PostMapping("/update")
- public AdmResponse update(@RequestBody AdmCreateRequest<AdmComponent> createRequest, @QueryParam("projectId") String projectId) throws Exception {
- List<AdmComponent> vos = CollUtil.newArrayList(createRequest.getContent());
- vos = service.doUpdate(AdmContextUtil.toDmpContext(), AdmComponent.class, vos);
- return AdmResponse.success(vos);
- }
- /**
- * 查询
- *
- * @param request
- * @return
- * @throws Exception
- */
- @PostMapping("/query")
- public AdmResponse query(@RequestBody AdmQueryCriteria request) throws Exception {
- request.setName(AdmComponent.OBJ_TYPE);
- return service.doQuery(AdmContextUtil.toDmpContext(), request, AdmComponent.class);
- }
- }
|