package com.persagy.proxy.adm.controller; import cn.hutool.core.collection.CollUtil; import com.persagy.proxy.adm.constant.AdmCommonConstant; import com.persagy.proxy.adm.model.AdmSystem; 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.service.IAdmSystemService; import com.persagy.proxy.common.entity.InstanceUrlParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotNull; import javax.ws.rs.QueryParam; import java.util.List; /** * Adm 系统 API * @author lvxy * @date 2021/8/16 */ @RestController @RequestMapping("/object/general-system") public class AdmSystemController { @Autowired private IAdmSystemService service; @Value("${middleware.group.code}") private String groupCode; /** * 统计 * @param projectId * @param request * @return * @throws Exception */ @PostMapping("/count") public AdmResponse count(@QueryParam("projectId") String projectId, @RequestBody AdmQueryCriteria request) throws Exception { // 组装上下文条件 InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID); request.setName("system"); request.setOnlyCount(true); return service.doQuery(context, request, AdmSystem.class); } /** * 创建 * @param createRequest * @return * @throws Exception */ @PostMapping("/create") public AdmResponse create(@RequestBody AdmCreateRequest createRequest, @QueryParam("projectId") String projectId) throws Exception { // 组装上下文条件 InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID); List vos = CollUtil.newArrayList(createRequest.getContent()); vos = service.doInsert(context, AdmSystem.class, vos); return AdmResponse.success(vos); } /** * 创建系统信息-处理建筑楼层 * @param createRequest * @return * @throws Exception */ @PostMapping("/create-bd-fl") public AdmResponse createBdFl(@RequestBody AdmCreateRequest createRequest, @QueryParam("projectId") String projectId) throws Exception { // 组装上下文条件 InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID); List vos = CollUtil.newArrayList(createRequest.getContent()); vos = service.doInsert(context, AdmSystem.class, vos); return AdmResponse.success(vos); } /** * 根据ID删除 * @param vos * @return * @throws Exception */ @PostMapping("/delete") public AdmResponse delete(@QueryParam("projectId") String projectId, @RequestBody List vos) throws Exception { // 组装上下文条件 InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID); service.doDelete(context, vos); return AdmResponse.success(); } /** * 更新 * @param createRequest * @return * @throws Exception */ @PostMapping("/update") public AdmResponse update(@RequestBody AdmCreateRequest createRequest, @QueryParam("projectId") String projectId) throws Exception { // 组装上下文条件 InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID); List vos = CollUtil.newArrayList(createRequest.getContent()); vos = service.doUpdate(context, AdmSystem.class, vos); return AdmResponse.success(vos); } /** * 系统绑定的动态信息点或静态信息点 * type: static(静态),iot (动态) * @param projectId * @param request * @return * @throws Exception */ @GetMapping("/export") public AdmResponse exportInfos(@QueryParam("projectId") String projectId, @RequestBody AdmQueryCriteria request) throws Exception { // 组装上下文条件 InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID); request.setName("system"); return service.doQuery(context, request, AdmSystem.class); } /** * 创建系统下的设备关系 * @param createRequest * @return * @throws Exception */ @PostMapping("/link-equip") public AdmResponse createRelateEquip(@RequestBody AdmCreateRequest createRequest, @QueryParam("projectId") String projectId) throws Exception { // 组装上下文条件 InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID); List vos = CollUtil.newArrayList(createRequest.getContent()); vos = service.doInsert(context, AdmSystem.class, vos); return AdmResponse.success(vos); } /** * 查询 * @param projectId * @param request * @return * @throws Exception */ @PostMapping("/query") public AdmResponse query(@QueryParam("projectId") String projectId, @RequestBody AdmQueryCriteria request) throws Exception { // 组装上下文条件 InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID); request.setName("system"); return service.doQuery(context, request, AdmSystem.class); } /** * 查询系统信息-系统建筑楼层一对多 * MajorName 专业名称 ,级联查询 系统分类名(categoryNames),系统下的设备(equipmentList),系统下的竖井(shaftList),业务空间(zoneSpaceBaseTableList) * @param projectId * @param request * @return * @throws Exception */ @PostMapping("/query-new") public AdmResponse queryNew(@QueryParam("projectId") String projectId, @QueryParam("buildingId") String buildingId, @QueryParam("floorId") String floorId, @RequestBody AdmQueryCriteria request) throws Exception { // 组装上下文条件 InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID); request.setName("system"); return service.doQuery(context, request, AdmSystem.class); } /** * 查询系统信息-试图级联建筑楼层 * @param projectId * @param request * @return * @throws Exception */ @PostMapping("/query-bdfl") public AdmResponse queryUnBdFl(@QueryParam("projectId") String projectId, @RequestBody AdmQueryCriteria request) throws Exception { // 组装上下文条件 InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID); request.setName("system"); return service.doQuery(context, request, AdmSystem.class); } /** * 查询没有和当前系统关联的设备 * id 为系统id * @param projectId * @param request * @return * @throws Exception */ @PostMapping("/un-sys-equip") public AdmResponse queryUnEquip(@QueryParam("projectId") String projectId, @NotNull @QueryParam("sysId") String sysId, @RequestBody AdmQueryCriteria request) throws Exception { // 组装上下文条件 InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID); request.setName("system"); return service.doQuery(context, request, AdmSystem.class); } /** * 查询没有和当前系统关联的竖井 * id 为系统id * @param projectId * @param request * @return * @throws Exception */ @PostMapping("/un-sys-shaft") public AdmResponse queryUnSh(@QueryParam("projectId") String projectId, @RequestBody AdmQueryCriteria request) throws Exception { // 组装上下文条件 InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID); request.setName("system"); return service.doQuery(context, request, AdmSystem.class); } /** * 查询没有和当前系统关联的业务空间 * id 为系统id * @param projectId * @param request * @return * @throws Exception */ @PostMapping("/un-sys-zoneSpaceBaseTable") public AdmResponse queryUnZoneSp(@QueryParam("projectId") String projectId, @RequestBody AdmQueryCriteria request) throws Exception { // 组装上下文条件 InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID); request.setName("system"); return service.doQuery(context, request, AdmSystem.class); } /** * 查询没有和当前空间绑定的系统 * 例如:prijectId=Pj4201050001,type=AirConditioningZone spaceId=Sp4201050001df2091cdf719443b80bb737aeabf0525 spaceId 为当前空间id type为当前空间类型 * @param projectId * @param request * @return * @throws Exception */ @PostMapping("/unspace-sys") public AdmResponse queryUnSpSy(@QueryParam("projectId") String projectId, @RequestBody AdmQueryCriteria request) throws Exception { // 组装上下文条件 InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID); request.setName("system"); return service.doQuery(context, request, AdmSystem.class); } }