diff --git a/SC-boot/linkage-admin/pom.xml b/SC-boot/linkage-admin/pom.xml index 1eb9caa1..cba47103 100644 --- a/SC-boot/linkage-admin/pom.xml +++ b/SC-boot/linkage-admin/pom.xml @@ -85,6 +85,12 @@ ${linkage.version} compile + + com.jnpf + linkage-demo + ${linkage.version} + compile + diff --git a/SC-boot/linkage-admin/src/main/java/jnpf/LinkageAdminApplication.java b/SC-boot/linkage-admin/src/main/java/jnpf/LinkageAdminApplication.java index 2f71dc8f..bec9c6aa 100644 --- a/SC-boot/linkage-admin/src/main/java/jnpf/LinkageAdminApplication.java +++ b/SC-boot/linkage-admin/src/main/java/jnpf/LinkageAdminApplication.java @@ -14,6 +14,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; +import org.springframework.scheduling.annotation.EnableScheduling; import java.lang.reflect.Method; import java.util.concurrent.ConcurrentHashMap; @@ -27,6 +28,7 @@ import java.util.concurrent.ConcurrentHashMap; * @date 2021/3/15 17:12 */ @SpringBootApplication(scanBasePackages = "jnpf",exclude={DataSourceAutoConfiguration.class}) +@EnableScheduling public class LinkageAdminApplication extends SpringBootServletInitializer implements CommandLineRunner { public static void main(String[] args) { diff --git a/SC-boot/linkage-admin/src/main/resources/application-dev.yml b/SC-boot/linkage-admin/src/main/resources/application-dev.yml index 90d163ed..70bf2e60 100644 --- a/SC-boot/linkage-admin/src/main/resources/application-dev.yml +++ b/SC-boot/linkage-admin/src/main/resources/application-dev.yml @@ -59,7 +59,17 @@ config: #===================== 文件模板配置 ===================== fileType: local #文件存储类型(local-本地存储,minio-网络存储) # win - Path: /usr/project/jnpf-resources/ #Windows配置(静态资源根目录和代码生成器临时目录) +# Path: /usr/project/jnpf-resources/ #Windows配置(静态资源根目录和代码生成器临时目录) + + # Windows环境配置(静态资源根目录和代码生成器临时目录) + Path: D:\demo\project\jnpf-resources\ + ServiceDirectoryPath: TemporaryFile + + # Linux、MacOS环境配置(静态资源根目录和代码生成器临时目录) + # Path: /www/wwwroot/JNPF.Admin.test/Resources/ + # ServiceDirectoryPath: /www/wwwroot/JNPF.Admin.test/Resources/CodeTemp/ + + # Linux #Path: /data/jnpf-resources/ #Linux配置(静态资源根目录和代码生成器临时目录) minio: diff --git a/SC-boot/linkage-admin/src/main/resources/application-preview.yml b/SC-boot/linkage-admin/src/main/resources/application-preview.yml index ff3fb3db..e91d4930 100644 --- a/SC-boot/linkage-admin/src/main/resources/application-preview.yml +++ b/SC-boot/linkage-admin/src/main/resources/application-preview.yml @@ -59,7 +59,8 @@ config: #===================== 文件模板配置 ===================== fileType: local #文件存储类型(local-本地存储,minio-网络存储) # win - Path: F:\project\jnpf-resources\ #Windows配置(静态资源根目录和代码生成器临时目录) +# Path: F:\project\jnpf-resources\ #Windows配置(静态资源根目录和代码生成器临时目录) + Path: D:\demo\jnpf-resources\ #Windows配置(静态资源根目录和代码生成器临时目录) # Linux #Path: /data/jnpf-resources/ #Linux配置(静态资源根目录和代码生成器临时目录) minio: diff --git a/SC-boot/linkage-admin/src/main/resources/application.yml b/SC-boot/linkage-admin/src/main/resources/application.yml index b109ee94..c99e4e0d 100644 --- a/SC-boot/linkage-admin/src/main/resources/application.yml +++ b/SC-boot/linkage-admin/src/main/resources/application.yml @@ -58,4 +58,5 @@ config: #===================== 接口鉴权 ===================== EnablePreAuth: false #是否开启 +fixedRateString: 5000 diff --git a/SC-boot/linkage-demo/pom.xml b/SC-boot/linkage-demo/pom.xml index 5d13fd0b..83cbe54e 100644 --- a/SC-boot/linkage-demo/pom.xml +++ b/SC-boot/linkage-demo/pom.xml @@ -31,10 +31,39 @@ compile + + + + + + + + + + + + + + io.swagger swagger-annotations + + + + + org.junit.jupiter + junit-jupiter + + + com.jnpf + linkage-example + 3.4.1-RELEASE + compile + + + diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/camera/flow.ffe b/SC-boot/linkage-demo/src/main/java/jnpf/camera/flow.ffe new file mode 100644 index 00000000..5dfaaf17 --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/camera/flow.ffe @@ -0,0 +1 @@ +{"flowEngine":{"appFormUrl":null,"category":"crm","creatorTime":1670572225000,"creatorUser":"admin","dbLinkId":"0","deleteMark":null,"deleteTime":null,"deleteUserId":null,"description":"获取摄像头的地址,定期更新","enCode":"002","enabledMark":1,"flowTemplateJson":"{\"type\":\"start\",\"content\":\"所有人\",\"properties\":{\"initiator\":[],\"initiatePos\":[],\"initiateRole\":[],\"title\":\"流程发起\",\"formOperates\":[{\"id\":\"mId\",\"name\":\"主表ID\",\"required\":false,\"requiredDisabled\":false,\"jnpfKey\":\"select\",\"dataType\":\"\",\"read\":true,\"write\":true},{\"id\":\"mName\",\"name\":\"设备名\",\"required\":true,\"requiredDisabled\":true,\"jnpfKey\":\"comInput\",\"dataType\":\"\",\"read\":true,\"write\":true},{\"id\":\"serialnumber\",\"name\":\"设备序列号\",\"required\":true,\"requiredDisabled\":true,\"jnpfKey\":\"comInput\",\"dataType\":\"\",\"read\":true,\"write\":true},{\"id\":\"flvaddress\",\"name\":\"标清flv直播地址\",\"required\":true,\"requiredDisabled\":true,\"jnpfKey\":\"comInput\",\"dataType\":\"\",\"read\":true,\"write\":true},{\"id\":\"flvhdaddress\",\"name\":\"高清flv直播地址\",\"required\":true,\"requiredDisabled\":true,\"jnpfKey\":\"comInput\",\"dataType\":\"\",\"read\":true,\"write\":true},{\"id\":\"mStatus\",\"name\":\"设备状态:不在线、在线\",\"required\":false,\"requiredDisabled\":false,\"jnpfKey\":\"switch\",\"dataType\":\"\",\"read\":true,\"write\":true}],\"initFuncConfig\":{\"on\":false,\"interfaceId\":\"\",\"interfaceName\":\"\",\"templateJson\":[]},\"endFuncConfig\":{\"on\":false,\"interfaceId\":\"\",\"interfaceName\":\"\",\"templateJson\":[]},\"flowRecallFuncConfig\":{\"on\":false,\"interfaceId\":\"\",\"interfaceName\":\"\",\"templateJson\":[]},\"waitMsgConfig\":{\"on\":0,\"msgId\":\"\",\"msgName\":\"\",\"templateJson\":[]},\"endMsgConfig\":{\"on\":0,\"msgId\":\"\",\"msgName\":\"\",\"templateJson\":[]},\"approveMsgConfig\":{\"on\":0,\"msgId\":\"\",\"msgName\":\"\",\"templateJson\":[]},\"rejectMsgConfig\":{\"on\":0,\"msgId\":\"\",\"msgName\":\"\",\"templateJson\":[]},\"copyMsgConfig\":{\"on\":0,\"msgId\":\"\",\"msgName\":\"\",\"templateJson\":[]},\"hasSubmitBtn\":true,\"submitBtnText\":\"提 交\",\"hasSaveBtn\":true,\"saveBtnText\":\"暂 存\",\"hasPressBtn\":false,\"pressBtnText\":\"催 办\",\"hasRevokeBtn\":false,\"revokeBtnText\":\"撤 回\",\"hasPrintBtn\":false,\"printBtnText\":\"打 印\",\"printId\":\"\",\"isComment\":false,\"isBatchApproval\":false,\"isSummary\":false,\"summaryType\":0},\"nodeId\":\"RbGc8G1\"}","formData":"[{\"filedId\":\"mId\",\"filedName\":\"主表ID\",\"required\":false},{\"filedId\":\"mName\",\"filedName\":\"设备名\",\"required\":true},{\"filedId\":\"serialnumber\",\"filedName\":\"设备序列号\",\"required\":true},{\"filedId\":\"flvaddress\",\"filedName\":\"标清flv直播地址\",\"required\":true},{\"filedId\":\"flvhdaddress\",\"filedName\":\"高清flv直播地址\",\"required\":true},{\"filedId\":\"mStatus\",\"filedName\":\"设备状态:不在线、在线\",\"required\":false}]","formType":1,"formUrl":"extend/monitoring_item/form.vue","fullName":"摄像头数据","icon":"fa fa-file-text-o","iconBackground":null,"id":"370926725908927749","lastModifyTime":1670574143000,"lastModifyUser":"admin","sortCode":0,"tables":"[]","type":1,"version":null,"visibleType":0},"visibleList":[]} \ No newline at end of file diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/camera/html/app/form/index.vue b/SC-boot/linkage-demo/src/main/java/jnpf/camera/html/app/form/index.vue new file mode 100644 index 00000000..bd301a52 --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/camera/html/app/form/index.vue @@ -0,0 +1,175 @@ + + + diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/camera/html/app/index/index.vue b/SC-boot/linkage-demo/src/main/java/jnpf/camera/html/app/index/index.vue new file mode 100644 index 00000000..98555598 --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/camera/html/app/index/index.vue @@ -0,0 +1,389 @@ + + + + + diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/camera/html/web/monitoring_item/ExportBox.vue b/SC-boot/linkage-demo/src/main/java/jnpf/camera/html/web/monitoring_item/ExportBox.vue new file mode 100644 index 00000000..e61a2182 --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/camera/html/web/monitoring_item/ExportBox.vue @@ -0,0 +1,68 @@ + + + + \ No newline at end of file diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/camera/html/web/monitoring_item/form.vue b/SC-boot/linkage-demo/src/main/java/jnpf/camera/html/web/monitoring_item/form.vue new file mode 100644 index 00000000..4eec2b2d --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/camera/html/web/monitoring_item/form.vue @@ -0,0 +1,341 @@ + + diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/camera/html/web/monitoring_item/index.vue b/SC-boot/linkage-demo/src/main/java/jnpf/camera/html/web/monitoring_item/index.vue new file mode 100644 index 00000000..80157067 --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/camera/html/web/monitoring_item/index.vue @@ -0,0 +1,307 @@ + + + diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/camera/resources/mapper/Monitoring_itemMapper.xml b/SC-boot/linkage-demo/src/main/java/jnpf/camera/resources/mapper/Monitoring_itemMapper.xml new file mode 100644 index 00000000..3dd925fb --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/camera/resources/mapper/Monitoring_itemMapper.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/controller/Monitoring_itemController.java b/SC-boot/linkage-demo/src/main/java/jnpf/controller/Monitoring_itemController.java new file mode 100644 index 00000000..8205fb16 --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/controller/Monitoring_itemController.java @@ -0,0 +1,360 @@ +package jnpf.controller; + +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import jnpf.base.ActionResult; +import jnpf.base.UserInfo; +import jnpf.base.entity.VisualdevEntity; +import jnpf.base.vo.DownloadVO; +import jnpf.base.vo.PageListVO; +import jnpf.base.vo.PaginationVO; +import jnpf.entity.Monitoring_itemEntity; +import jnpf.model.monitoring_item.*; +import jnpf.service.Monitoring_itemService; +import jnpf.config.ConfigValueUtil; +import jnpf.engine.entity.FlowTaskEntity; +import jnpf.engine.enums.FlowStatusEnum; +import jnpf.exception.DataException; +import jnpf.exception.WorkFlowException; +import jnpf.util.*; +import jnpf.util.enums.FileTypeEnum; +import jnpf.util.file.UploadUtil; +import lombok.Cleanup; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Workbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + + +/** + * + * monitoring_item + * @版本: V3.2.0 + * @版权: 长江云息(https://www.jnpfsoft.com) + * @作者: Allen Pan + * @日期: 2022-12-09 + */ +@Slf4j +@RestController +@Api(tags = "monitoring_item" , value = "example") +@RequestMapping("/api/example/Monitoring_item") +public class Monitoring_itemController { + + + @Autowired + private GeneraterSwapUtil generaterSwapUtil; + + @Autowired + private ConfigValueUtil configValueUtil; + + @Autowired + private UserProvider userProvider; + + @Autowired + private Monitoring_itemService monitoring_itemService; + + + + /** + * 列表 + * + * @param monitoring_itemPagination + * @return + */ + @PostMapping("/getList") + public ActionResult list(@RequestBody Monitoring_itemPagination monitoring_itemPagination)throws IOException{ + List list= monitoring_itemService.getList(monitoring_itemPagination); + //处理id字段转名称,若无需转或者为空可删除 + for(Monitoring_itemEntity entity:list){ + entity.setMId(generaterSwapUtil.getDynName("370933183241262469" ,"M_Name" ,"id","" ,entity.getMId())); + entity.setMStatus(generaterSwapUtil.switchSelectValue(entity.getMStatus() ,"开" ,"关")); + } + List listVO=JsonUtil.getJsonToList(list,Monitoring_itemListVO.class); + for(Monitoring_itemListVO monitoring_itemVO:listVO){ + } + + + + + for(Monitoring_itemListVO vo:listVO){ + FlowTaskEntity flowTaskEntity = generaterSwapUtil.getInfoSubmit(vo.getId(), FlowTaskEntity::getStatus); + if (flowTaskEntity!=null){ + vo.setFlowState(flowTaskEntity.getStatus()); + }else{ + vo.setFlowState(null); + } + } + PageListVO vo=new PageListVO(); + vo.setList(listVO); + PaginationVO page=JsonUtil.getJsonToBean(monitoring_itemPagination,PaginationVO.class); + vo.setPagination(page); + return ActionResult.success(vo); + } + + + /** + * 创建 + * + * @param crData + * @return + */ + @PostMapping + @Transactional + public ActionResult create(@RequestBody @Valid Map crData) throws DataException { + Monitoring_itemCrForm monitoring_itemCrForm = JsonUtil.getJsonToBean(crData,Monitoring_itemCrForm.class); + String visualId ="370926725908927749"; + VisualdevEntity visualdevEntity =generaterSwapUtil.getVisualEntity(visualId); + String mainId =RandomUtil.uuId(); + UserInfo userInfo=userProvider.get(); + Monitoring_itemEntity entity = JsonUtil.getJsonToBean(monitoring_itemCrForm, Monitoring_itemEntity.class); + entity.setId(mainId); + monitoring_itemService.save(entity); + if (FlowStatusEnum.submit.getMessage().equals(monitoring_itemCrForm.getStatus())){ + try { + generaterSwapUtil.submitFlowTask(visualdevEntity,mainId,monitoring_itemCrForm,userInfo,monitoring_itemCrForm.getCandidateList()); + } catch (WorkFlowException e) { + e.printStackTrace(); + } + return ActionResult.success("提交成功,请耐心等待"); + } + return ActionResult.success("保存成功"); +} + + + + /** + * 模板下载 + * + * @return + */ + @ApiOperation("模板下载") + @GetMapping("/templateDownload") + public ActionResult TemplateDownload(){ + UserInfo userInfo=userProvider.get(); + DownloadVO vo=DownloadVO.builder().build(); + try{ + vo.setName("职员信息.xlsx"); + vo.setUrl(UploaderUtil.uploaderFile("/api/Common/DownloadModel?encryption=" ,userInfo.getId()+"#"+"职员信息.xlsx"+"#"+"Temporary")); + }catch(Exception e){ + log.error("信息导出Excel错误:{}" ,e.getMessage()); + } + return ActionResult.success(vo); + } + /** + * 导出Excel + * + * @return + */ + @ApiOperation("导出Excel") + @GetMapping("/Actions/Export") + public ActionResult Export(Monitoring_itemPaginationExportModel monitoring_itemPaginationExportModel) throws IOException { + if (StringUtil.isEmpty(monitoring_itemPaginationExportModel.getSelectKey())){ + return ActionResult.fail("请选择导出字段"); + } + Monitoring_itemPagination monitoring_itemPagination=JsonUtil.getJsonToBean(monitoring_itemPaginationExportModel, Monitoring_itemPagination.class); + List list= monitoring_itemService.getTypeList(monitoring_itemPagination,monitoring_itemPaginationExportModel.getDataType()); + //处理id字段转名称,若无需转或者为空可删除 + for(Monitoring_itemEntity entity:list){ + entity.setMId(generaterSwapUtil.getDynName("370933183241262469" ,"M_Name" ,"id","" ,entity.getMId())); + entity.setMStatus(generaterSwapUtil.switchSelectValue(entity.getMStatus() ,"开" ,"关")); + } + List listVO=JsonUtil.getJsonToList(list,Monitoring_itemListVO.class); + for(Monitoring_itemListVO monitoring_itemVO:listVO){ + } + + + + //转换为map输出 + List>mapList=JsonUtil.getJsonToListMap(JsonUtil.getObjectToStringDateFormat(listVO,"yyyy-MM-dd HH:mm:ss")); + String[]keys=!StringUtil.isEmpty(monitoring_itemPaginationExportModel.getSelectKey())?monitoring_itemPaginationExportModel.getSelectKey().split(","):new String[0]; + UserInfo userInfo=userProvider.get(); + DownloadVO vo=this.creatModelExcel(configValueUtil.getTemporaryFilePath(),mapList,keys,userInfo); + return ActionResult.success(vo); + } + //导出表格 + public DownloadVO creatModelExcel(String path,List>list,String[]keys,UserInfo userInfo){ + DownloadVO vo=DownloadVO.builder().build(); + List entitys=new ArrayList<>(); + if(keys.length>0){ + for(String key:keys){ + switch(key){ + case "mId" : + entitys.add(new ExcelExportEntity("主表ID" ,"mId")); + break; + case "mName" : + entitys.add(new ExcelExportEntity("设备名" ,"mName")); + break; + case "serialnumber" : + entitys.add(new ExcelExportEntity("设备序列号" ,"serialnumber")); + break; + case "flvaddress" : + entitys.add(new ExcelExportEntity("标清flv直播地址" ,"flvaddress")); + break; + case "flvhdaddress" : + entitys.add(new ExcelExportEntity("高清flv直播地址" ,"flvhdaddress")); + break; + case "mStatus" : + entitys.add(new ExcelExportEntity("设备状态:不在线、在线" ,"mStatus")); + break; + default: + break; + } + } + } + + ExportParams exportParams = new ExportParams(null, "表单信息"); + exportParams.setType(ExcelType.XSSF); + try{ + @Cleanup Workbook workbook = new HSSFWorkbook(); + if (entitys.size()>0){ + workbook = ExcelExportUtil.exportExcel(exportParams, entitys, list); + } + String name = "表单信息" + DateUtil.dateNow("yyyyMMdd") + "_" + RandomUtil.uuId() + ".xlsx"; + + String fileName = configValueUtil.getTemporaryFilePath() + name; + @Cleanup FileOutputStream output = new FileOutputStream(XSSEscape.escapePath(fileName)); + workbook.write(output); + //上传文件 + UploadUtil.uploadFile(configValueUtil.getFileType(), fileName, FileTypeEnum.TEMPORARY, name); + + vo.setName(name); + vo.setUrl(UploaderUtil.uploaderFile(userInfo.getId() + "#" + name + "#" + "Temporary")); + } catch (Exception e) { + log.error("信息导出Excel错误:{}", e.getMessage()); + e.printStackTrace(); + } + return vo; + } + + + /** + * 批量删除 + * + * @param ids + * @return + */ + @DeleteMapping("/batchRemove/{ids}") + @Transactional + public ActionResult batchRemove(@PathVariable("ids") String ids){ + String[] idList = ids.split(","); + List allIdList = Arrays.asList(idList); + List columnIdList = new ArrayList<>(20); + int i =0; + for (String allId : allIdList){ + FlowTaskEntity taskEntity = generaterSwapUtil.getInfoSubmit(allId, FlowTaskEntity::getId, FlowTaskEntity::getStatus); + if (taskEntity==null){ + columnIdList.add(allId); + }else if (taskEntity.getStatus().equals(0)){ + try { + generaterSwapUtil.deleteFlowTask(taskEntity); + columnIdList.add(allId); + i++; + } catch (WorkFlowException e) { + e.printStackTrace(); + } + } + } + monitoring_itemService.removeByIds(columnIdList); + if (i == 0 && columnIdList.size()==0){ + return ActionResult.fail("流程已发起,无法删除"); + } + return ActionResult.success("删除成功"); + } + + + /** + * 信息 + * + * @param id + * @return + */ + @GetMapping("/{id}") + public ActionResult info(@PathVariable("id") String id){ + Monitoring_itemEntity entity= monitoring_itemService.getInfo(id); + Monitoring_itemInfoVO vo=JsonUtil.getJsonToBean(entity, Monitoring_itemInfoVO.class); + + //子表 + //副表 + return ActionResult.success(vo); + } + + + + + + /** + * 更新 + * + * @param id + * @return + */ + @PutMapping("/{id}") + @Transactional + public ActionResult update(@PathVariable("id") String id,@RequestBody @Valid Map upData) throws DataException { + Monitoring_itemUpForm monitoring_itemUpForm = JsonUtil.getJsonToBean(upData,Monitoring_itemUpForm.class); + String visualId ="370926725908927749"; + VisualdevEntity visualdevEntity =generaterSwapUtil.getVisualEntity(visualId); + UserInfo userInfo=userProvider.get(); + Monitoring_itemEntity entity= monitoring_itemService.getInfo(id); + if(entity!=null){ + Monitoring_itemEntity subentity=JsonUtil.getJsonToBean(monitoring_itemUpForm, Monitoring_itemEntity.class); + monitoring_itemService.update(id, subentity); + + if (FlowStatusEnum.submit.getMessage().equals(monitoring_itemUpForm.getStatus())){ + try { + generaterSwapUtil.submitFlowTask(visualdevEntity,id,subentity,userInfo,monitoring_itemUpForm.getCandidateList()); + } catch (WorkFlowException e) { + e.printStackTrace(); + } + return ActionResult.success("提交成功,请耐心等待"); + } + return ActionResult.success("更新成功"); + }else{ + return ActionResult.fail("更新失败,数据不存在"); + } + } + + /** + * 删除 + * + * @param id + * @return + */ + @DeleteMapping("/{id}") + @Transactional + public ActionResult delete(@PathVariable("id") String id){ + Monitoring_itemEntity entity= monitoring_itemService.getInfo(id); + if(entity!=null){ + FlowTaskEntity taskEntity = generaterSwapUtil.getInfoSubmit(id, FlowTaskEntity::getId, FlowTaskEntity::getStatus); + if (taskEntity != null) { + try { + generaterSwapUtil.deleteFlowTask(taskEntity); + } catch (WorkFlowException e) { + e.printStackTrace(); + } + } + monitoring_itemService.delete(entity); + + } + return ActionResult.success("删除成功"); + } + + + + + +} diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/entity/Monitoring_itemEntity.java b/SC-boot/linkage-demo/src/main/java/jnpf/entity/Monitoring_itemEntity.java new file mode 100644 index 00000000..067146eb --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/entity/Monitoring_itemEntity.java @@ -0,0 +1,82 @@ +package jnpf.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; +/** + * + * 监控清单 + * @版本: V3.2.0 + * @版权: 长江云息(https://www.jnpfsoft.com) + * @作者: Allen Pan + * @日期: 2022-12-09 + */ +@Data +@TableName("monitoring_item") +public class Monitoring_itemEntity { + + @TableId(value = "F_ID",type = IdType.AUTO) + private String id; + + @TableField("F_CREATORUSERID") + private Integer creatoruserid; + + @TableField("F_CREATORUSERNAME") + private String creatorusername; + + @TableField("F_CREATORTIME") + private Date creatortime; + + @TableField("F_LASTMODIFYUSERID") + private Integer lastmodifyuserid; + + @TableField("F_LASTMODIFYUSERNAME") + private String lastmodifyusername; + + @TableField("F_LASTMODIFYTIME") + private Date lastmodifytime; + + @TableField("F_DELETEUSERID") + private Integer deleteuserid; + + @TableField("F_DELETEUSERNAME") + private String deleteusername; + + @TableField("F_DELETETIME") + private Date deletetime; + + @TableField("F_DELETEMARK") + private String deletemark; + + @TableField("Z_ID") + private Integer zId; + + @TableField("D_ID") + private Integer dId; + + @TableField("M_ID") + private String mId; + + @TableField("M_NAME") + private String mName; + + @TableField("SERIALNUMBER") + private String serialnumber; + + @TableField("M_STATUS") + private String mStatus; + + @TableField("FLVADDRESS") + private String flvaddress; + + @TableField("FLVHDADDRESS") + private String flvhdaddress; + + @TableField("ChannelNumber") + private String channelNumber; + +} diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/imou/utils/IDUtils.java b/SC-boot/linkage-demo/src/main/java/jnpf/imou/utils/IDUtils.java new file mode 100644 index 00000000..481ddded --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/imou/utils/IDUtils.java @@ -0,0 +1,13 @@ +package jnpf.imou.utils; + +import java.util.UUID; + +/** + * 生成32位随机数 + * + */ +public class IDUtils { + public static String getId(){ + return UUID.randomUUID().toString().replace("-", ""); + } +} diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/imou/utils/ImouConfig.java b/SC-boot/linkage-demo/src/main/java/jnpf/imou/utils/ImouConfig.java new file mode 100644 index 00000000..77114410 --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/imou/utils/ImouConfig.java @@ -0,0 +1,360 @@ +package jnpf.imou.utils; + + +import cn.hutool.json.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import jnpf.entity.Monitoring_itemEntity; +import jnpf.service.Monitoring_itemService; +import jnpf.util.Md5Util; +import lombok.extern.slf4j.Slf4j; +import okhttp3.*; +import org.junit.jupiter.api.Test; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.util.Calendar; +import java.util.Date; + +@Slf4j +@Component +public class ImouConfig { + + private String appSecret="189fec75174e487684a16c49dd1789"; +// appId,控制台-我的应用-应用信息中获取 + private String appId="lc38c9c4e8d3ad437c"; +// 随机数(32位) + private String nonce; +// 签名,平台用来做签名校验 + private String sign; +// UTC时间戳,单位为秒 + private Long time; +// 协议版本信息,当前为1.0 + private String ver="1.0"; +// id请求唯一标示ID,每次请求调用时传入唯一非空字符串 + private String id="98a7a257-c4e4-4db3-a2d3-d97a3836b87c"; + + @Resource + private Monitoring_itemService monitoring_itemService; + + + // 设备序列号 + private String deviceId="5K0A36BPAZ73FA0"; + @Test +// @Scheduled(initialDelay=1000, fixedRate=50000000 ) + public void main() throws Exception { +// 查询rtmp协议直播地址 +// String URL="https://openapi.lechange.cn/openapi/queryDeviceRtmpLive"; +// 获取管理员token + ImouConfig config = new ImouConfig(); + String accessToken = config.getAccessToken(); + +// 获取设备的列表信息 +// config.getList(accessToken); + +// 批量创建设备flv直播(支持录像直播和实时直播) +// for (int i = 0; i < 32; i++) { +// config.createFlvLive(accessToken,i+""); +// } + +////获取开发者当前账号下创建的直播详情列表,包含直播地址、直播状态、直播计划等详细信息。 +// config.getLiveList(accessToken); + + for (int i = 0; i < 32; i++) { +// 1 根据通道号获取地址 + JSONObject flvLive = config.getFlvLive(accessToken, i+""); + // flv标清直播 + String flv = String.valueOf(flvLive.get("flv")); + // flv高清直播 + String flvHD = String.valueOf(flvLive.get("flvHD")); +// 设备序列号 + String deviceId = String.valueOf(flvLive.get("deviceId")); +// 设备通道号 + String channelId = String.valueOf(flvLive.get("channelId")); + Monitoring_itemEntity monitor = new Monitoring_itemEntity(); +// 设置区域为日照金属 + + monitor.setMId("1"); + monitor.setMName("NVR-3FA0-"+i); + monitor.setSerialnumber(deviceId); + monitor.setMStatus("0"); + monitor.setFlvaddress(flv); + monitor.setFlvhdaddress(flvHD); + monitor.setChannelNumber(channelId); +// boolean save = monitoring_itemService.save(monitor); + // 2 查询本地表中此通道是否存在 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Monitoring_itemEntity::getChannelNumber,channelId); + Monitoring_itemEntity one = monitoring_itemService.getOne(wrapper); + if (one!=null){ + // 3 存在根据返回的id进行更新 + monitor.setMName(null); + monitor.setLastmodifyuserid(1); + monitor.setLastmodifyusername("wangchuang"); + monitor.setLastmodifytime(new Date()); + monitoring_itemService.update(monitor,wrapper); + }else{ + // 4 不存在进行保存 + monitor.setCreatoruserid(1); + monitor.setCreatorusername("wangchuang"); + monitor.setCreatortime(new Date()); + monitoring_itemService.save(monitor); + } + } + + + } + +// 分页查询设备详细信息 + public void getList(String accessToken) throws IOException { + // 获取管理员token + ImouConfig config = this; + config.time=Instant.now().getEpochSecond(); + config.nonce=IDUtils.getId(); + String str="time:"+config.time+","+"nonce:"+config.nonce+","+"appSecret:"+config.appSecret; + config.sign=Md5Util.getStringMd5(str); + String host="https://openapi.lechange.cn:443/openapi"; + String path="/listDeviceDetailsByPage"; +// 每页条目数,范围:1~50 + int pageSize=10; +// 查询页码,从1开始 + int page=1; +// bind:获取绑定的设备 +//share:获取共享的设备 +//bindAndShare:获取绑定及共享的设备 + String source="bindAndShare"; + OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + MediaType mediaType = MediaType.parse("application/json"); + String content="{\r\n \"system\": " + + "{\r\n " + + " \"ver\": \""+config.ver+"\", \r\n " + + " \"sign\":\""+config.sign+"\",\r\n " + + " \"appId\": \""+config.appId+"\",\r\n " + + " \"time\": "+config.time+" , \r\n " + + " \"nonce\": \""+config.nonce+"\"\r\n " + + " },\r\n " + + " \"params\": " + + "{\r\n\"" + + "pageSize\":\""+pageSize+"\", \r\n " + + "\"page\":\""+page+"\", \r\n " + + "\"token\":\""+accessToken+"\", \r\n " + + "\"source\":\""+source+"\" \r\n " + + "},\r\n " + + " \"id\": \""+config.id+"\"\r\n}"; + System.out.println(content); + RequestBody bodyy = RequestBody.create(mediaType, content); + Request request = new Request.Builder() + .url(host+path) + .method("POST", bodyy) + .build(); + Response response = client.newCall(request).execute(); + String resText=response.body().string(); + System.out.println(resText); + } + + /** + * + 注意: + 1、获取到的管理员token有效期是3天,请在即将过期或者接口报错TK1002时重新获取,每个管理员token具备独立的3天生命周期,请勿频繁调用避免占用过多接口调用次数。 + 2、获取到的管理员token超过2天但未满3天,此时再请求accessToken接口时,会返回新的管理员token,老token和新token生命周期相互独立,且都可以正常使用 + * @return accessToken + */ + public String getAccessToken() throws IOException { +// 获取管理员token + ImouConfig config = this; + config.time=Instant.now().getEpochSecond(); + config.nonce=IDUtils.getId(); + String str="time:"+config.time+","+"nonce:"+config.nonce+","+"appSecret:"+config.appSecret; + config.sign=Md5Util.getStringMd5(str); + String host="https://openapi.lechange.cn:443/openapi"; + String path="/accessToken"; + OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + MediaType mediaType = MediaType.parse("application/json"); + String content="{\r\n \"system\": " + + "{\r\n " + + " \"ver\": \""+config.ver+"\", \r\n " + + " \"sign\":\""+config.sign+"\",\r\n " + + " \"appId\": \""+config.appId+"\",\r\n " + + " \"time\": "+config.time+" , \r\n " + + " \"nonce\": \""+config.nonce+"\"\r\n " + + " },\r\n " + + " \"params\": " + + "{\r\n },\r\n " + + " \"id\": \""+config.id+"\"\r\n}"; + RequestBody bodyy = RequestBody.create(mediaType, content); + Request request = new Request.Builder() + .url(host+path) + .method("POST", bodyy) + .build(); + Response response = client.newCall(request).execute(); + String resText=response.body().string(); + if (resText.length()>0){ + JSONObject a=new JSONObject(resText); + JSONObject a2=new JSONObject(a.get("result")); + if (a2.get("msg").toString().equals("操作成功。")){ + JSONObject a3=new JSONObject(a2.get("data")); + String accessToken=a3.get("accessToken").toString(); + return accessToken; + }else{ + log.error(a2.get("msg").toString()); + return "获取失败!失败原因:"+a2.get("msg").toString(); + } + }else{ + return "获取失败!"; + } + } + + //获取到的字符串进行处理 + public String getText(String subStr,String str){ + String subStr1=str.substring(str.lastIndexOf(subStr)+subStr.length()); + return subStr1.substring(0,subStr1.indexOf("\"")); + } + + public void createFlvLive(String accessToken,String channeId) throws IOException { + // 获取管理员token + ImouConfig config = this; + config.time=Instant.now().getEpochSecond(); + config.nonce=IDUtils.getId(); + String str="time:"+config.time+","+"nonce:"+config.nonce+","+"appSecret:"+config.appSecret; + config.sign=Md5Util.getStringMd5(str); + String host="https://openapi.lechange.cn:443/openapi"; + String path="/createDeviceFlvLive"; +// 设备序列号 + String deviceId="5K0A36BPAZ73FA0"; +// 直播类型,不传或为空则默认是realTime实时直播,playback回放视频直播 + String type="realTime"; +// 通道号 +// String channeId="0"; +// localRecord设备本地录像,cloudRecord设备云录像 + String recordType="localRecord"; +// 回放起始时间,录像类型是回放时字段必填,格式yyyy-MM-dd HH:mm:ss,不支持跨天时间 + // 获取当前日期前一天的日期 +// String beginTime=LocalDate.now().minusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + //创建Calendar实例 + Calendar cal = Calendar.getInstance(); + //设置当前时间 + cal.setTime(new Date()); + cal.add(Calendar.DATE, -1); + String beginTime=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cal.getTime()); +// 回放截止时间,录像类型是回放时字段必填,格式yyyy-MM-dd HH:mm:ss,不支持跨天时间 + String endTime=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + MediaType mediaType = MediaType.parse("application/json"); + String content="{\r\n \"system\": " + + "{\r\n " + + " \"ver\": \""+config.ver+"\", \r\n " + + " \"sign\":\""+config.sign+"\",\r\n " + + " \"appId\": \""+config.appId+"\",\r\n " + + " \"time\": "+config.time+" , \r\n " + + " \"nonce\": \""+config.nonce+"\"\r\n " + + " },\r\n " + + " \"params\": " + + "{\r\n\"" + + "deviceId\":\""+deviceId+"\", \r\n " + + "\"channelId\":\""+channeId+"\", \r\n " + + "\"token\":\""+accessToken+"\", \r\n " + + "\"type\":\""+type+"\", \r\n " + + "\"recordType\":\""+recordType+"\", \r\n " + + "\"beginTime\":\""+beginTime+"\", \r\n " + + "\"endTime\":\""+endTime+"\" \r\n " + + "},\r\n " + + " \"id\": \""+config.id+"\"\r\n}"; + System.out.println(content); + RequestBody bodyy = RequestBody.create(mediaType, content); + Request request = new Request.Builder() + .url(host+path) + .method("POST", bodyy) + .build(); + Response response = client.newCall(request).execute(); + String resText=response.body().string(); + System.out.println(resText); + } +//获取开发者当前账号下创建的直播详情列表,包含直播地址、直播状态、直播计划等详细信息。 + public void getLiveList(String accessToken) throws IOException { + // 获取管理员token + ImouConfig config = this; + config.time=Instant.now().getEpochSecond(); + config.nonce=IDUtils.getId(); + String str="time:"+config.time+","+"nonce:"+config.nonce+","+"appSecret:"+config.appSecret; + config.sign=Md5Util.getStringMd5(str); + String host="https://openapi.lechange.cn:443/openapi"; + String path="/liveList"; +//查询范围 数字取值范围为:[1,N] (N为正整数,且N>1);差值范围为:[0,99] + String queryRange="1-32"; + OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + MediaType mediaType = MediaType.parse("application/json"); + String content="{\r\n \"system\": " + + "{\r\n " + + " \"ver\": \""+config.ver+"\", \r\n " + + " \"sign\":\""+config.sign+"\",\r\n " + + " \"appId\": \""+config.appId+"\",\r\n " + + " \"time\": "+config.time+" , \r\n " + + " \"nonce\": \""+config.nonce+"\"\r\n " + + " },\r\n " + + " \"params\": " + + "{\r\n\"" + + "queryRange\":\""+queryRange+"\", \r\n " + + "\"token\":\""+accessToken+"\" \r\n " + + "},\r\n " + + " \"id\": \""+config.id+"\"\r\n}"; + System.out.println(content); + RequestBody bodyy = RequestBody.create(mediaType, content); + Request request = new Request.Builder() + .url(host+path) + .method("POST", bodyy) + .build(); + Response response = client.newCall(request).execute(); + String resText=response.body().string(); + System.out.println(resText); + } +//根据设备号、通道号查询flv协议的直播地址(只支持查询实时直播) 。 + public JSONObject getFlvLive(String accessToken, String channelId) throws IOException { + // 获取管理员token + ImouConfig config = this; + config.time=Instant.now().getEpochSecond(); + config.nonce=IDUtils.getId(); + String str="time:"+config.time+","+"nonce:"+config.nonce+","+"appSecret:"+config.appSecret; + config.sign=Md5Util.getStringMd5(str); + String host="https://openapi.lechange.cn:443/openapi"; + String path="/queryDeviceFlvLive"; + + OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + MediaType mediaType = MediaType.parse("application/json"); + String content="{\r\n \"system\": " + + "{\r\n " + + " \"ver\": \""+config.ver+"\", \r\n " + + " \"sign\":\""+config.sign+"\",\r\n " + + " \"appId\": \""+config.appId+"\",\r\n " + + " \"time\": "+config.time+" , \r\n " + + " \"nonce\": \""+config.nonce+"\"\r\n " + + " },\r\n " + + " \"params\": " + + "{\r\n\"" + + "deviceId\":\""+config.deviceId+"\", \r\n " + + "\"channelId\":\""+channelId+"\", \r\n " + + "\"token\":\""+accessToken+"\" \r\n " + + "},\r\n " + + " \"id\": \""+config.id+"\"\r\n}"; + System.out.println(content); + RequestBody bodyy = RequestBody.create(mediaType, content); + Request request = new Request.Builder() + .url(host+path) + .method("POST", bodyy) + .build(); + Response response = client.newCall(request).execute(); + String resText=response.body().string(); + JSONObject object1 = new JSONObject(resText); + JSONObject object2 = new JSONObject(object1.get("result")); + JSONObject object3 = new JSONObject(object2.get("data")); + + System.out.println(resText); + return object3; + } +} diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/imou/utils/Testaa.java b/SC-boot/linkage-demo/src/main/java/jnpf/imou/utils/Testaa.java new file mode 100644 index 00000000..9cace251 --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/imou/utils/Testaa.java @@ -0,0 +1,21 @@ +package jnpf.imou.utils; + +import cn.hutool.json.JSONObject; + +public class Testaa { + public static void main(String[] args) { +// {"result":{"msg":"操作成功。","code":"0","data":{"expireTime":252417,"accessToken":"At_0000062668d71c5b455386dcb052b4af"}},"id":"98a7a257-c4e4-4db3-a2d3-d97a3836b87c"} + String a="{\"result\":{\"msg\":\"操作成功。\",\"code\":\"0\",\"data\":{\"expireTime\":252417,\"accessToken\":\"At_0000062668d71c5b455386dcb052b4af\"}},\"id\":\"98a7a257-c4e4-4db3-a2d3-d97a3836b87c\"}"; + String resText=a; + if (resText.length()>0){ + JSONObject a1=new JSONObject(resText); + JSONObject a2=new JSONObject(a1.get("result")); + JSONObject a3=new JSONObject(a2.get("data")); +// JSONObject a4=new JSONObject(a3.get("accessToken")); + System.out.println(a1); + System.out.println(a2); + System.out.println(a3.get("accessToken")); +// System.out.println(a4); + } + } +} diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/mapper/Monitoring_itemMapper.java b/SC-boot/linkage-demo/src/main/java/jnpf/mapper/Monitoring_itemMapper.java new file mode 100644 index 00000000..9515f48a --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/mapper/Monitoring_itemMapper.java @@ -0,0 +1,20 @@ +package jnpf.mapper; + + +//import jnpf.entity.Monitoring_itemEntity; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import jnpf.entity.Monitoring_itemEntity; + + +/** + * + * monitoring_item + * 版本: V3.2.0 + * 版权: 长江云息(https://www.jnpfsoft.com) + * 作者: Allen Pan + * 日期: 2022-12-09 + */ +public interface Monitoring_itemMapper extends BaseMapper { + +} diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemCrForm.java b/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemCrForm.java new file mode 100644 index 00000000..faaa7dff --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemCrForm.java @@ -0,0 +1,59 @@ + + +package jnpf.model.monitoring_item; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * + * + * @版本: V3.2.0 + * @版权: 长江云息(https://www.jnpfsoft.com) + * @作者: Allen Pan + * @日期: 2022-12-09 + */ +@Data +public class Monitoring_itemCrForm { + /** 流程状态 **/ + @JsonProperty("status") + private String status; + + private Map> candidateList; + + /** 主表ID **/ + @JsonProperty("mId") + private String mId; + + + /** 设备名 **/ + @JsonProperty("mName") + private String mName; + + + /** 设备序列号 **/ + @JsonProperty("serialnumber") + private String serialnumber; + + + /** 标清flv直播地址 **/ + @JsonProperty("flvaddress") + private String flvaddress; + + + /** 高清flv直播地址 **/ + @JsonProperty("flvhdaddress") + private String flvhdaddress; + + + /** 设备状态:不在线、在线 **/ + @JsonProperty("mStatus") + private String mStatus; + + + + +} \ No newline at end of file diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemInfoVO.java b/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemInfoVO.java new file mode 100644 index 00000000..2c476fd5 --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemInfoVO.java @@ -0,0 +1,45 @@ + + +package jnpf.model.monitoring_item; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +/** + * + * + * @版本: V3.2.0 + * @版权: 长江云息(https://www.jnpfsoft.com) + * @作者: Allen Pan + * @日期: 2022-12-09 + */ +@Data +public class Monitoring_itemInfoVO{ + /** 主键 **/ + @JsonProperty("id") + private String id; + + /** 主表ID **/ + @JsonProperty("mId") + private String mId; + + /** 设备名 **/ + @JsonProperty("mName") + private String mName; + + /** 设备序列号 **/ + @JsonProperty("serialnumber") + private String serialnumber; + + /** 标清flv直播地址 **/ + @JsonProperty("flvaddress") + private String flvaddress; + + /** 高清flv直播地址 **/ + @JsonProperty("flvhdaddress") + private String flvhdaddress; + + /** 设备状态:不在线、在线 **/ + @JsonProperty("mStatus") + private String mStatus; + +} \ No newline at end of file diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemListQuery.java b/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemListQuery.java new file mode 100644 index 00000000..b5e2f095 --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemListQuery.java @@ -0,0 +1,22 @@ +package jnpf.model.monitoring_item; + +import jnpf.base.Pagination; +import lombok.Data; +/** + * + * + * @版本: V3.2.0 + * @版权: 长江云息(https://www.jnpfsoft.com) + * @作者: Allen Pan + * @日期: 2022-12-09 + */ +@Data +public class Monitoring_itemListQuery extends Pagination { + + /** 设备名 */ + private String mName; + /** + * 菜单id + */ + private String menuId; +} \ No newline at end of file diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemListVO.java b/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemListVO.java new file mode 100644 index 00000000..61eef945 --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemListVO.java @@ -0,0 +1,59 @@ + + +package jnpf.model.monitoring_item; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +/** + * + * + * @版本: V3.2.0 + * @版权: 长江云息(https://www.jnpfsoft.com) + * @作者: Allen Pan + * @日期: 2022-12-09 + */ +@Data +public class Monitoring_itemListVO{ + /** 主键 */ + private String id; + + + /** 主表ID **/ + @JsonProperty("mId") + private String mId; + + + + /** 设备名 **/ + @JsonProperty("mName") + private String mName; + + + + /** 设备序列号 **/ + @JsonProperty("serialnumber") + private String serialnumber; + + + + /** 标清flv直播地址 **/ + @JsonProperty("flvaddress") + private String flvaddress; + + + + /** 高清flv直播地址 **/ + @JsonProperty("flvhdaddress") + private String flvhdaddress; + + + + /** 设备状态:不在线、在线 **/ + @JsonProperty("mStatus") + private String mStatus; + + + @JsonProperty("flowState") + private Integer flowState; +} \ No newline at end of file diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemPagination.java b/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemPagination.java new file mode 100644 index 00000000..f781bd84 --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemPagination.java @@ -0,0 +1,24 @@ +package jnpf.model.monitoring_item; + + +import jnpf.base.Pagination; +import lombok.Data; + +/** + * + * + * @版本: V3.2.0 + * @版权: 长江云息(https://www.jnpfsoft.com) + * @作者: Allen Pan + * @日期: 2022-12-09 + */ +@Data +public class Monitoring_itemPagination extends Pagination { + + /** 设备名 */ + private String mName; + /** + * 菜单id + */ + private String menuId; +} \ No newline at end of file diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemPaginationExportModel.java b/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemPaginationExportModel.java new file mode 100644 index 00000000..c0dec90a --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemPaginationExportModel.java @@ -0,0 +1,25 @@ +package jnpf.model.monitoring_item; + +import jnpf.base.Pagination; +import lombok.Data; +/** + * + * + * @版本: V3.2.0 + * @版权: 长江云息(https://www.jnpfsoft.com) + * @作者: Allen Pan + * @日期: 2022-12-09 + */ +@Data +public class Monitoring_itemPaginationExportModel extends Pagination { + + private String selectKey; + + private String json; + + private String dataType; + + + /** 设备名 */ + private String mName; +} \ No newline at end of file diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemUpForm.java b/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemUpForm.java new file mode 100644 index 00000000..05137890 --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/model/monitoring_item/Monitoring_itemUpForm.java @@ -0,0 +1,55 @@ + + +package jnpf.model.monitoring_item; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * + * + * @版本: V3.2.0 + * @版权: 长江云息(https://www.jnpfsoft.com) + * @作者: Allen Pan + * @日期: 2022-12-09 + */ +@Data +public class Monitoring_itemUpForm{ + /** 主键 */ + private String id; + + /** 流程状态 **/ + @JsonProperty("status") + private String status; + + private Map> candidateList; + + /** 主表ID **/ + @JsonProperty("mId") + private String mId; + + /** 设备名 **/ + @JsonProperty("mName") + private String mName; + + /** 设备序列号 **/ + @JsonProperty("serialnumber") + private String serialnumber; + + /** 标清flv直播地址 **/ + @JsonProperty("flvaddress") + private String flvaddress; + + /** 高清flv直播地址 **/ + @JsonProperty("flvhdaddress") + private String flvhdaddress; + + /** 设备状态:不在线、在线 **/ + @JsonProperty("mStatus") + private String mStatus; + + +} \ No newline at end of file diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/service/Monitoring_itemService.java b/SC-boot/linkage-demo/src/main/java/jnpf/service/Monitoring_itemService.java new file mode 100644 index 00000000..a6fcab76 --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/service/Monitoring_itemService.java @@ -0,0 +1,35 @@ +package jnpf.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import jnpf.entity.Monitoring_itemEntity; +import jnpf.model.monitoring_item.Monitoring_itemPagination; + +import java.util.List; +/** + * + * monitoring_item + * 版本: V3.2.0 + * 版权: 长江云息(https://www.jnpfsoft.com) + * 作者: Allen Pan + * 日期: 2022-12-09 + */ +public interface Monitoring_itemService extends IService { + + List getList(Monitoring_itemPagination monitoring_itemPagination); + + List getTypeList(Monitoring_itemPagination monitoring_itemPagination,String dataType); + + + + Monitoring_itemEntity getInfo(String id); + + void delete(Monitoring_itemEntity entity); + + void create(Monitoring_itemEntity entity); + + boolean update( String id, Monitoring_itemEntity entity); + +// 子表方法 + + //列表子表数据方法 +} diff --git a/SC-boot/linkage-demo/src/main/java/jnpf/service/impl/Monitoring_itemServiceImpl.java b/SC-boot/linkage-demo/src/main/java/jnpf/service/impl/Monitoring_itemServiceImpl.java new file mode 100644 index 00000000..91bde443 --- /dev/null +++ b/SC-boot/linkage-demo/src/main/java/jnpf/service/impl/Monitoring_itemServiceImpl.java @@ -0,0 +1,208 @@ +package jnpf.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jnpf.entity.Monitoring_itemEntity; +import jnpf.mapper.Monitoring_itemMapper; +import jnpf.model.monitoring_item.Monitoring_itemPagination; +import jnpf.permission.model.authorize.AuthorizeConditionModel; +import jnpf.permission.service.AuthorizeService; +import jnpf.service.Monitoring_itemService; +import jnpf.util.ServletUtil; +import jnpf.util.StringUtil; +import jnpf.util.UserProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +/** + * + * monitoring_item + * 版本: V3.2.0 + * 版权: 长江云息(https://www.jnpfsoft.com) + * 作者: Allen Pan + * 日期: 2022-12-09 + */ +@Service +public class Monitoring_itemServiceImpl extends ServiceImpl implements Monitoring_itemService { + + + @Autowired + private UserProvider userProvider; + + @Autowired + private AuthorizeService authorizeService; + + + + + + @Override + public List getList(Monitoring_itemPagination monitoring_itemPagination){ + + String userId=userProvider.get().getUserId(); + List AllIdList =new ArrayList(); + int total=0; + int monitoring_itemNum =0; + QueryWrapper monitoring_itemQueryWrapper=new QueryWrapper<>(); + boolean pcPermission = true; + boolean appPermission = true; + boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc"); + if(isPc && pcPermission){ + if (!userProvider.get().getIsAdministrator()){ + Object monitoring_itemObj=authorizeService.getCondition(new AuthorizeConditionModel(monitoring_itemQueryWrapper,monitoring_itemPagination.getMenuId(),"monitoring_item")); + if (ObjectUtil.isEmpty(monitoring_itemObj)){ + return new ArrayList<>(); + } else { + monitoring_itemQueryWrapper = (QueryWrapper)monitoring_itemObj; + monitoring_itemNum++; + } + } + } + if(!isPc && appPermission){ + if (!userProvider.get().getIsAdministrator()){ + Object monitoring_itemObj=authorizeService.getCondition(new AuthorizeConditionModel(monitoring_itemQueryWrapper,monitoring_itemPagination.getMenuId(),"monitoring_item")); + if (ObjectUtil.isEmpty(monitoring_itemObj)){ + return new ArrayList<>(); + } else { + monitoring_itemQueryWrapper = (QueryWrapper)monitoring_itemObj; + monitoring_itemNum++; + } + } + } + if(StringUtil.isNotEmpty(monitoring_itemPagination.getMName())){ + monitoring_itemNum++; + monitoring_itemQueryWrapper.lambda().like(Monitoring_itemEntity::getMName,monitoring_itemPagination.getMName()); + } + + if(AllIdList.size()>0){ + monitoring_itemQueryWrapper.lambda().in(Monitoring_itemEntity::getId, AllIdList); + } + //排序 + if(StringUtil.isEmpty(monitoring_itemPagination.getSidx())){ + monitoring_itemQueryWrapper.lambda().orderByAsc(Monitoring_itemEntity::getMId); + }else{ + try { + String sidx = monitoring_itemPagination.getSidx(); + Monitoring_itemEntity monitoring_itemEntity = new Monitoring_itemEntity(); + Field declaredField = monitoring_itemEntity.getClass().getDeclaredField(sidx); + declaredField.setAccessible(true); + String value = declaredField.getAnnotation(TableField.class).value(); + monitoring_itemQueryWrapper="asc".equals(monitoring_itemPagination.getSort().toLowerCase())?monitoring_itemQueryWrapper.orderByAsc(value):monitoring_itemQueryWrapper.orderByDesc(value); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } + } + if((total>0 && AllIdList.size()>0) || total==0){ + Page page=new Page<>(monitoring_itemPagination.getCurrentPage(), monitoring_itemPagination.getPageSize()); + IPage userIPage=this.page(page, monitoring_itemQueryWrapper); + return monitoring_itemPagination.setData(userIPage.getRecords(),userIPage.getTotal()); + }else{ + List list = new ArrayList(); + return monitoring_itemPagination.setData(list, list.size()); + } + } + @Override + public List getTypeList(Monitoring_itemPagination monitoring_itemPagination,String dataType){ + String userId=userProvider.get().getUserId(); + List AllIdList =new ArrayList(); + int total=0; + int monitoring_itemNum =0; + QueryWrapper monitoring_itemQueryWrapper=new QueryWrapper<>(); + boolean pcPermission = true; + boolean appPermission = true; + boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc"); + if(isPc && pcPermission){ + if (!userProvider.get().getIsAdministrator()){ + Object monitoring_itemObj=authorizeService.getCondition(new AuthorizeConditionModel(monitoring_itemQueryWrapper,monitoring_itemPagination.getMenuId(),"monitoring_item")); + if (ObjectUtil.isEmpty(monitoring_itemObj)){ + return new ArrayList<>(); + } else { + monitoring_itemQueryWrapper = (QueryWrapper)monitoring_itemObj; + monitoring_itemNum++; + } + } + } + if(!isPc && appPermission){ + if (!userProvider.get().getIsAdministrator()){ + Object monitoring_itemObj=authorizeService.getCondition(new AuthorizeConditionModel(monitoring_itemQueryWrapper,monitoring_itemPagination.getMenuId(),"monitoring_item")); + if (ObjectUtil.isEmpty(monitoring_itemObj)){ + return new ArrayList<>(); + } else { + monitoring_itemQueryWrapper = (QueryWrapper)monitoring_itemObj; + monitoring_itemNum++; + } + } + } + if(StringUtil.isNotEmpty(monitoring_itemPagination.getMName())){ + monitoring_itemNum++; + monitoring_itemQueryWrapper.lambda().like(Monitoring_itemEntity::getMName,monitoring_itemPagination.getMName()); + } + + if(AllIdList.size()>0){ + monitoring_itemQueryWrapper.lambda().in(Monitoring_itemEntity::getId, AllIdList); + } + //排序 + if(StringUtil.isEmpty(monitoring_itemPagination.getSidx())){ + monitoring_itemQueryWrapper.lambda().orderByAsc(Monitoring_itemEntity::getMId); + }else{ + try { + String sidx = monitoring_itemPagination.getSidx(); + Monitoring_itemEntity monitoring_itemEntity = new Monitoring_itemEntity(); + Field declaredField = monitoring_itemEntity.getClass().getDeclaredField(sidx); + declaredField.setAccessible(true); + String value = declaredField.getAnnotation(TableField.class).value(); + monitoring_itemQueryWrapper="asc".equals(monitoring_itemPagination.getSort().toLowerCase())?monitoring_itemQueryWrapper.orderByAsc(value):monitoring_itemQueryWrapper.orderByDesc(value); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } + } + if("0".equals(dataType)){ + if((total>0 && AllIdList.size()>0) || total==0){ + Page page=new Page<>(monitoring_itemPagination.getCurrentPage(), monitoring_itemPagination.getPageSize()); + IPage userIPage=this.page(page, monitoring_itemQueryWrapper); + return monitoring_itemPagination.setData(userIPage.getRecords(),userIPage.getTotal()); + }else{ + List list = new ArrayList(); + return monitoring_itemPagination.setData(list, list.size()); + } + }else{ + return this.list(monitoring_itemQueryWrapper); + } + } + + @Override + public Monitoring_itemEntity getInfo(String id){ + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.lambda().eq(Monitoring_itemEntity::getId,id); + return this.getOne(queryWrapper); + } + + @Override + public void create(Monitoring_itemEntity entity){ + this.save(entity); + } + + @Override + public boolean update(String id, Monitoring_itemEntity entity){ + entity.setId(id); + return this.updateById(entity); + } + @Override + public void delete(Monitoring_itemEntity entity){ + if(entity!=null){ + this.removeById(entity.getId()); + } + } + //子表方法 + + //列表子表数据方法 + +} \ No newline at end of file diff --git a/SC-web/package-lock.json b/SC-web/package-lock.json index 9cd5e18d..84c3620b 100644 --- a/SC-web/package-lock.json +++ b/SC-web/package-lock.json @@ -22463,8 +22463,7 @@ "@fullcalendar/bootstrap": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/@fullcalendar/bootstrap/-/bootstrap-4.4.2.tgz", - "integrity": "sha512-zxtQvpZqr7zeBCfszo/i1e4zCvGwLh2zOp8J6Wxw5s73HsB1zuftWop7sPO+qhRrhX5MdM9i/wr8/nNY8BZSmw==", - "requires": {} + "integrity": "sha512-zxtQvpZqr7zeBCfszo/i1e4zCvGwLh2zOp8J6Wxw5s73HsB1zuftWop7sPO+qhRrhX5MdM9i/wr8/nNY8BZSmw==" }, "@fullcalendar/core": { "version": "4.4.2", @@ -22474,14 +22473,12 @@ "@fullcalendar/daygrid": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-4.4.2.tgz", - "integrity": "sha512-axjfMhxEXHShV3r2TZjf+2niJ1C6LdAxkHKmg7mVq4jXtUQHOldU5XsjV0v2lUAt1urJBFi2zajfK8798ukL3Q==", - "requires": {} + "integrity": "sha512-axjfMhxEXHShV3r2TZjf+2niJ1C6LdAxkHKmg7mVq4jXtUQHOldU5XsjV0v2lUAt1urJBFi2zajfK8798ukL3Q==" }, "@fullcalendar/interaction": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-4.4.2.tgz", - "integrity": "sha512-3ItpGFnxcYQT4NClqhq93QTQwOI8x3mlMf5M4DgK5avVaSzpv9g8p+opqeotK2yzpFeINps06cuQyB1h7vcv1Q==", - "requires": {} + "integrity": "sha512-3ItpGFnxcYQT4NClqhq93QTQwOI8x3mlMf5M4DgK5avVaSzpv9g8p+opqeotK2yzpFeINps06cuQyB1h7vcv1Q==" }, "@fullcalendar/timegrid": { "version": "4.4.2", @@ -22641,8 +22638,7 @@ "@tinymce/tinymce-vue": { "version": "3.2.8", "resolved": "https://registry.npmjs.org/@tinymce/tinymce-vue/-/tinymce-vue-3.2.8.tgz", - "integrity": "sha512-jEz+NZ0g+FZFz273OEUWz9QkwPMyjc5AJYyxOgu51O1Y5UaJ/6IUddXTX6A20mwCleEv5ebwNYdalviafx4fnA==", - "requires": {} + "integrity": "sha512-jEz+NZ0g+FZFz273OEUWz9QkwPMyjc5AJYyxOgu51O1Y5UaJ/6IUddXTX6A20mwCleEv5ebwNYdalviafx4fnA==" }, "@types/glob": { "version": "7.1.3", @@ -23280,8 +23276,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz", "integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==", - "dev": true, - "requires": {} + "dev": true }, "@vue/test-utils": { "version": "1.0.0-beta.29", @@ -23593,15 +23588,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "requires": {} + "dev": true }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "alphanum-sort": { "version": "1.0.2", @@ -23967,8 +23960,7 @@ "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "dev": true, - "requires": {} + "dev": true }, "babel-eslint": { "version": "10.0.1", @@ -27202,8 +27194,7 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true, - "requires": {} + "dev": true }, "ansi-regex": { "version": "3.0.0", @@ -27480,8 +27471,7 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true, - "requires": {} + "dev": true }, "debug": { "version": "4.3.1", @@ -28893,8 +28883,7 @@ "highcharts-vue": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/highcharts-vue/-/highcharts-vue-1.3.5.tgz", - "integrity": "sha512-By1kc3m8XoI20pMshs/ue69j4rH6eQioDPoIrtC20RTti4QyvNAx8DisGSO3GAWe9sn50hPk8NsyxcwZIGaz3Q==", - "requires": {} + "integrity": "sha512-By1kc3m8XoI20pMshs/ue69j4rH6eQioDPoIrtC20RTti4QyvNAx8DisGSO3GAWe9sn50hPk8NsyxcwZIGaz3Q==" }, "hmac-drbg": { "version": "1.0.1", @@ -37299,8 +37288,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", "dev": true, - "optional": true, - "requires": {} + "optional": true }, "ansi-regex": { "version": "3.0.0", diff --git a/SC-web/src/utils/define.js b/SC-web/src/utils/define.js index eb8f0c75..6bf3f912 100644 --- a/SC-web/src/utils/define.js +++ b/SC-web/src/utils/define.js @@ -1,7 +1,8 @@ // 开发环境接口配置 // JAVA Boot版本对应后端接口地址 // JAVA Cloud对应网关地址 -const APIURl = 'http://150.158.169.212:30000' +// const APIURl = 'http://150.158.169.212:30000' +const APIURl = 'http://localhost:30000' module.exports = { APIURl: APIURl, @@ -10,13 +11,18 @@ module.exports = { comUploadUrl: process.env.VUE_APP_BASE_API + '/api/file/Uploader', comUrl: process.env.VUE_APP_BASE_API, // 本地文件预览 - filePreviewServer: process.env.NODE_ENV === 'development' ? 'http://150.158.169.212:30090' : process.env.VUE_APP_BASE_API + '/FileServer', + // filePreviewServer: process.env.NODE_ENV === 'development' ? 'http://150.158.169.212:30090' : process.env.VUE_APP_BASE_API + '/FileServer', + filePreviewServer: process.env.NODE_ENV === 'development' ? 'http://localhost:30000' : process.env.VUE_APP_BASE_API + '/FileServer', // 大屏应用前端路径 - dataV: process.env.NODE_ENV === 'development' ? 'http://150.158.169.212:8100/DataV' : process.env.VUE_APP_BASE_API + '/DataV', + // dataV: process.env.NODE_ENV === 'development' ? 'http://150.158.169.212:8100/DataV' : process.env.VUE_APP_BASE_API + '/DataV', + dataV: process.env.NODE_ENV === 'development' ? 'http://localhost:30000/DataV' : process.env.VUE_APP_BASE_API + '/DataV', // 数据报表接口-java boot - reportServer: process.env.NODE_ENV === 'development' ? 'http://150.158.169.212:30007' : process.env.VUE_APP_BASE_API + '/ReportServer', + // reportServer: process.env.NODE_ENV === 'development' ? 'http://150.158.169.212:30007' : process.env.VUE_APP_BASE_API + '/ReportServer', + reportServer: process.env.NODE_ENV === 'development' ? 'http://localhost:30000' : process.env.VUE_APP_BASE_API + '/ReportServer', // 数据报表接口-java cloud // reportServer: process.env.NODE_ENV === 'development' ? 'http://150.158.169.212:30000' : process.env.VUE_APP_BASE_API, + reportServer: process.env.NODE_ENV === 'development' ? 'http://localhost:30000' : process.env.VUE_APP_BASE_API, // 报表前端 - report: process.env.NODE_ENV === 'development' ? 'http://150.158.169.212:8200' : process.env.VUE_APP_BASE_API + '/Report' + report: process.env.NODE_ENV === 'development' ? 'http://localhost:30000' : process.env.VUE_APP_BASE_API + '/Report' + // report: process.env.NODE_ENV === 'development' ? 'http://150.158.169.212:8200' : process.env.VUE_APP_BASE_API + '/Report' }