Commit ca407055 authored by xukaiqiang's avatar xukaiqiang

init

parents
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.idea
*.iml
*.settings
*.classpath
*.project
*.springBeans
*.factorypath
target
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>YeeSafety3DServer</artifactId>
<name>YeeSafety3DServer</name>
<parent>
<groupId>com.yeejoin.amos</groupId>
<artifactId>YeeSafety3DRoot</artifactId>
<version>1.1.0</version>
</parent>
<dependencies>
<!-- 基础jar -->
<dependency>
<groupId>com.yeejoin.amos</groupId>
<artifactId>AmosOPService</artifactId>
<version>${YeeOp.version}</version>
</dependency>
<!-- 安全模块jar -->
<dependency>
<groupId>com.yeejoin.amos</groupId>
<artifactId>amos-authtoken</artifactId>
<version>${YeeSecurity.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.yeejoin.amos.safety.business.controller;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.yeejoin.amos.op.core.common.query.DaoCriteria;
import com.yeejoin.amos.op.core.common.query.QueryOperatorEnum;
import com.yeejoin.amos.op.core.common.request.CommonRequest;
import com.yeejoin.amos.op.core.util.StringUtil;
import com.yeejoin.amos.security.authorization.Authorization;
import com.yeejoin.amos.security.context.CurrentAuthentication;
import com.yeejoin.amos.security.entity.Company;
import com.yeejoin.amos.security.entity.Department;
import com.yeejoin.amos.security.entity.User;
import springfox.documentation.annotations.ApiIgnore;
/**
* <pre> 基础控制器 </pre>
* @author as-hanshipeng
* @version $Id: BaseController.java, v 0.1 2016-12-15 上午08:41:59 as-hanshipengExp $
*/
@ApiIgnore
@RestController
@RequestMapping("/base")
@Authorization
public class BaseController {
@Autowired
protected HttpServletRequest request;
/**
* 获取最大数据位置(分页)
*
* @param page
* @return
*/
public int getMaxResult(Pageable page) {
if(page==null||page.getPageNumber()==-1){
return Integer.MAX_VALUE;
}
return page.getPageSize();
}
/**
* 获取起始数据位置(分页)
*
* @param page
* @return
*/
public int getFirstResult(Pageable page) {
if(page==null||page.getPageNumber()==-1){
return 0;
}
return page.getPageNumber() * page.getPageSize();
}
/**
* 当前登录用户Id
*/
protected Long getUserId()
{
Long userId = null;
if (getUserInfo() != null)
{
userId = getUserInfo().getId();
}
return userId;
}
/**
* 当前登录用户信息
*/
protected User getUserInfo()
{
return CurrentAuthentication.getAuthenticatedUserThreadLocal();
}
protected String getToken() {
/* Get token from header */
String authToken = request.getHeader("X-Access-Token");
/* If token not found get it from request parameter */
if (authToken == null)
{
authToken = request.getParameter("token");
}
return authToken;
}
/**
* 获取当前用户所属公司名称
* @return
*/
protected String getCurrentCompanyNameOfUser(){
return getUserInfo().getCompany().getCompanyName();
}
/**
* 获取当前用户所属部门名称
* @return
*/
protected String getCurrentDepartmentNameOfUser(){
return getUserInfo().getDepartment().getDepartmentName();
}
/**
*
* <pre>
* 构建当前用户所属公司的code
* 例如:
* 属于大队A(填充中队A对应的CompanyRank中的compCode:总队id*支队id*大队id)
*
* </pre>
*
*/
protected String buildCurrentCompCodeOfUser()
{
/**
* 当前用户所属公司
*/
Company company = getUserInfo().getCompany();
return company.getCompCode();
}
/**
*
* <pre>
* 根据code获取公司ID
* </pre>
*
* @param code
* @return
*/
protected String getCompIdByCode(String code)
{
if (code.contains("-")) //公司+部门的code
{
String[] codes = code.split("-");
String compCode = codes[0];
String[] comps = compCode.split("\\*");
return comps[comps.length-1];
}else //公司的code
{
String[] comps = code.split("\\*");
return comps[comps.length-1];
}
}
/**
*
* <pre>
* 根据code获取部门ID
* </pre>
*
* @param code
* @return
*/
protected String getDepmIdByCode(String code)
{
if (code.contains("-"))
{
String[] codes = code.split("-");
String depmCode = codes[1];
String[] comps = depmCode.split("#");
return comps[comps.length-1];
}
return null;
}
/**
*
* <pre>
* 生成通过当前用户所属公司(包含子公司)过滤的查询条件
* </pre>
*
* @param daoCriterias 查询条件集合
* @return
*/
public List<DaoCriteria> buildCompDaoCriteriaInChildren(List<DaoCriteria> daoCriterias)
{
/**
* 当前用户所属公司
*/
Company company = getUserInfo().getCompany();
String companyCode = company.getCompCode();
//添加所属公司的过滤条件
DaoCriteria daoCriteria = new DaoCriteria();
daoCriteria.setPropertyName("orgCode");
daoCriteria.setOperator(QueryOperatorEnum.EQUAL.getName());
daoCriteria.setValue(companyCode);
daoCriterias.add(daoCriteria);
//添加子公司下的过滤条件
DaoCriteria compDaoCriteria = new DaoCriteria();
compDaoCriteria.setPropertyName("orgCode");
compDaoCriteria.setOperator(QueryOperatorEnum.LIKE.getName());
compDaoCriteria.setValue(companyCode+"*%");
daoCriterias.add(compDaoCriteria);
return daoCriterias;
}
/**
*
* <pre>
* 生成通过当前用户所属公司(不包含子公司)过滤的查询条件
* </pre>
*
* @param daoCriterias 查询条件集合
* @return
*/
public List<DaoCriteria> buildCompDaoCriteriaOutChildren(List<DaoCriteria> daoCriterias)
{
/**
* 当前用户所属公司
*/
Company company = getUserInfo().getCompany();
String companyCode = company.getCompCode();
//添加所属公司的过滤条件
DaoCriteria daoCriteria = new DaoCriteria();
daoCriteria.setPropertyName("orgCode");
daoCriteria.setOperator(QueryOperatorEnum.EQUAL.getName());
daoCriteria.setValue(companyCode);
daoCriterias.add(daoCriteria);
return daoCriterias;
}
/**
*
* <pre>
* 构建当前用户所属组织机构(公司+部门)的code
* 例如:
* 属于大队A(填充中队A对应的CompanyRank中的compCode:总队id*支队id*大队id)
* 属于大队A中的部门1(填充大队A对应的CompanyRank中的compCode-部门1对应的DepartmentRank的depmCode:总队id*支队id*大队id-父部门id#本部门id)
*
* </pre>
*
*/
protected String buildCurrentOrgCodeOfUser()
{
StringBuffer orgCode = new StringBuffer();
/**
* 当前用户所属公司
*/
Company company = getUserInfo().getCompany();
orgCode.append(company.getCompCode());
/**
* 当前用户所属部门
*/
Department department = getUserInfo().getDepartment();
//如果所属部门为null,则表示该用户为公司级用户
if (department != null)
{
orgCode.append("-");
orgCode.append(department.getDepmCode());
}
return orgCode.toString();
}
/**
*
* <pre>
* 生成通过当前用户所属组织机构(包含子机构)过滤的查询条件
* </pre>
*
* @param daoCriterias 查询条件集合
* @return
*/
public List<DaoCriteria> buildOrgDaoCriteriaInChildren(List<DaoCriteria> daoCriterias)
{
if (getUserInfo() == null)
{
return daoCriterias;
}
/**
* 当前用户所属公司
*/
Company company = getUserInfo().getCompany();
String companyCode = company.getCompCode();
//添加子公司下的过滤条件
DaoCriteria childCompDaoCriteria = new DaoCriteria();
childCompDaoCriteria.setPropertyName("orgCode");
childCompDaoCriteria.setOperator(QueryOperatorEnum.LIKE.getName());
childCompDaoCriteria.setValue(companyCode+"*%");
daoCriterias.add(childCompDaoCriteria);
/*
*
* 当前用户所属部门
*/
Department department = getUserInfo().getDepartment();
if (department != null)//部门用户,添加所属部门及子部门的过滤条件
{
String depmCode = department.getDepmCode();
//添加所属部门的过滤条件
DaoCriteria depmDaoCriteria = new DaoCriteria();
depmDaoCriteria.setPropertyName("orgCode");
depmDaoCriteria.setOperator(QueryOperatorEnum.EQUAL.getName());
depmDaoCriteria.setValue(companyCode+"-"+ depmCode);
daoCriterias.add(depmDaoCriteria);
//添加子部门下的过滤条件
DaoCriteria childDepmDaoCriteria = new DaoCriteria();
childDepmDaoCriteria.setPropertyName("orgCode");
childDepmDaoCriteria.setOperator(QueryOperatorEnum.LIKE.getName());
childDepmDaoCriteria.setValue(companyCode+"-"+ depmCode+ "#%");
daoCriterias.add(childDepmDaoCriteria);
}else //公司级用户,添加所属公司、及公司下所有部门的查询条件
{
//添加所属公司的过滤条件
DaoCriteria compDaoCriteria = new DaoCriteria();
compDaoCriteria.setPropertyName("orgCode");
compDaoCriteria.setOperator(QueryOperatorEnum.EQUAL.getName());
compDaoCriteria.setValue(companyCode);
daoCriterias.add(compDaoCriteria);
//添加所属公司下所有部门的过滤条件
DaoCriteria depmDaoCriteria = new DaoCriteria();
depmDaoCriteria.setPropertyName("orgCode");
depmDaoCriteria.setOperator(QueryOperatorEnum.LIKE.getName());
depmDaoCriteria.setValue(companyCode+"-%");
daoCriterias.add(depmDaoCriteria);
}
return daoCriterias;
}
/**
*
* <pre>
* 生成通过当前用户所属组织机构(不包含子机构)过滤的查询条件
* </pre>
*
* @param daoCriterias 查询条件集合
* @return
*/
public List<DaoCriteria> buildOrgDaoCriteriaOutChildren(List<DaoCriteria> daoCriterias)
{
if (getUserInfo() == null)
{
return daoCriterias;
}
/**
* 当前用户所属公司
*/
Company company = getUserInfo().getCompany();
String companyCode = company.getCompCode();
/**
* 当前用户所属部门
*/
Department department = getUserInfo().getDepartment();
if (department != null)//部门用户,添加所属部门的过滤条件
{
String depmCode = department.getDepmCode();
//添加所属部门的过滤条件
DaoCriteria depmDaoCriteria = new DaoCriteria();
depmDaoCriteria.setPropertyName("orgCode");
depmDaoCriteria.setOperator(QueryOperatorEnum.EQUAL.getName());
depmDaoCriteria.setValue(companyCode+"-"+ depmCode);
daoCriterias.add(depmDaoCriteria);
}else //公司级用户,添加所属公司、及公司下所有部门的查询条件
{
//添加所属公司的过滤条件
DaoCriteria compDaoCriteria = new DaoCriteria();
compDaoCriteria.setPropertyName("orgCode");
compDaoCriteria.setOperator(QueryOperatorEnum.EQUAL.getName());
compDaoCriteria.setValue(companyCode);
daoCriterias.add(compDaoCriteria);
//添加所属公司下所有部门的过滤条件
DaoCriteria depmDaoCriteria = new DaoCriteria();
depmDaoCriteria.setPropertyName("orgCode");
depmDaoCriteria.setOperator(QueryOperatorEnum.LIKE.getName());
depmDaoCriteria.setValue(companyCode+"-%");
daoCriterias.add(depmDaoCriteria);
}
return daoCriterias;
}
/**
*
* <pre>
* 生成查询条件
* </pre>
*
* @param queryRequests
* @return
*/
public List<DaoCriteria> buildDaoCriterias(List<CommonRequest> queryRequests) {
List<DaoCriteria> daoCriterias = new ArrayList<DaoCriteria>();
//
// if (queryRequests == null) {
// return daoCriterias;
// }
// String orgCode = null;
if(queryRequests != null && !queryRequests.isEmpty()){
for (CommonRequest query : queryRequests) {
DaoCriteria criteria = new DaoCriteria();
if(StringUtil.isNotEmpty(query.getValue())){
// if(query.getName().equals("orgCode")){
// orgCode = query.getValue().toString();
// continue;
// }
//要查询的属性
criteria.setPropertyName(propertyNameChange(query.getName()));
// String column = criteria.getPropertyName();
// if (!(query.getValue() instanceof Collection<?>)
// && column.substring(column.length()-2,column.length()).toUpperCase().equals("ID")) {
// criteria.setValue(Long.valueOf(query.getValue().toString()));
// } else {
//要查询的属性的值
criteria.setValue(query.getValue());
// }
if (query.getType() == null || query.getType()==0)
{
criteria.setOperator(QueryOperatorEnum.EQUAL.getName());
}else
{
//查询操作LIKE、EQUAL等
String operator = QueryOperatorEnum.getEnum(query.getType()).getName();
if (operator==null || "".equals(operator)) {
criteria.setOperator(QueryOperatorEnum.EQUAL.getName());
}else if(operator.equals(QueryOperatorEnum.LIKE.getName())){
setLikeCriteria(criteria,query);
}else if(operator.equals(QueryOperatorEnum.BIGGER_EQUAL.getName())){
criteria.setOperator(QueryOperatorEnum.getEnum(operator).getName());
}else if(operator.equals(QueryOperatorEnum.LESS_EQUAL.getName())){
criteria.setOperator(QueryOperatorEnum.getEnum(operator).getName());
}else {
criteria.setOperator(QueryOperatorEnum.getEnum(operator)
.getName());
}
}
daoCriterias.add(criteria);
}
}
}
// if(isDirector()){
// daoCriterias = buildOrgDaoCriteriaInChildren(daoCriterias,orgCode);
// }else{
// daoCriterias = buildOrgDaoCriteriaOutChildren(daoCriterias);
// }
return daoCriterias;
}
/**
*
* <pre>
* 生成查询条件
* </pre>
*
* @param queryRequest
* @return
*/
public List<DaoCriteria> buildDaoCriteria(CommonRequest queryRequest) {
List<DaoCriteria> daoCriterias = new ArrayList<DaoCriteria>();
daoCriterias = buildOrgDaoCriteriaInChildren(daoCriterias);
if (queryRequest == null) {
return daoCriterias;
}
DaoCriteria criteria = new DaoCriteria();
criteria.setPropertyName(propertyNameChange(queryRequest.getName()));
criteria.setValue(queryRequest.getValue());
String operator = QueryOperatorEnum.getEnum(queryRequest.getType()).getName();
if (!StringUtil.isNotEmpty(operator)) {
criteria.setOperator(QueryOperatorEnum.EQUAL.getName());
}else if(operator.equals(QueryOperatorEnum.LIKE.getName())){
setLikeCriteria(criteria,queryRequest);
}else {
criteria.setOperator(QueryOperatorEnum.getEnum(operator).getName());
}
daoCriterias.add(criteria);
return daoCriterias;
}
/**
*
* <pre>
* 生成查询条件
* </pre>
*
* @param queryRequest
* @return
*/
public List<DaoCriteria> buildDaoCriteria() {
List<DaoCriteria> daoCriterias = new ArrayList<DaoCriteria>();
return daoCriterias;
}
public String propertyNameChange(String name) {
return name;
}
/**
* 对like查询语句的内容进行特殊字符转义
* @param criteria
* @param query
*/
public void setLikeCriteria(DaoCriteria criteria,CommonRequest query){
String value = (String) query.getValue();
if(value != null){
value = value.replace("%","/%").replace("_","/_");
criteria.setValue("%"+value+"%");
criteria.setOperator(QueryOperatorEnum.LIKE.getName());
}
}
}
package com.yeejoin.amos.safety.business.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Sort;
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 com.yeejoin.amos.op.core.common.query.CommonPageable;
import com.yeejoin.amos.op.core.common.query.DaoCriteria;
import com.yeejoin.amos.op.core.common.query.QueryOperatorEnum;
import com.yeejoin.amos.op.core.common.request.CommonRequest;
import com.yeejoin.amos.op.core.common.response.CommonResponse;
import com.yeejoin.amos.op.core.util.CommonResponseUtil;
import com.yeejoin.amos.safety.business.service.INodeLogViewService;
import com.yeejoin.amos.safety.common.cache.CurUserCompanyCache;
import com.yeejoin.amos.safety.common.entity.NodeToipLogView;
import com.yeejoin.amos.security.entity.Company;
import com.yeejoin.amos.security.entity.Department;
import com.yeejoin.amos.security.entity.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
/**
*
* <pre>
* 日志管理
* </pre>
*
* @author amos
* @version $Id: NodeLogViewController.java, v 0.1 2019年1月2日 下午3:37:47 amos Exp $
*/
@RestController
@RequestMapping("/bizLog")
@Api(value = "bizLog", tags = { "日志管理API" })
public class NodeLogViewController extends BaseController
{
@Autowired
private INodeLogViewService nodeLogViewService;
@PostMapping(value = "/query",produces = "application/json;charset=UTF-8")
@ApiOperation(value = "分页查询消息", notes = "分页查询消息")
public CommonResponse getLogInfos(
@ApiParam(value = "查询条件", required = false) @RequestBody(required = false) List<CommonRequest> queryRequests,
@ApiParam(value = "分页参数", required = true) CommonPageable commonPageable)
{
List<DaoCriteria> daoCriterias = buildDaoCriterias(queryRequests);
User currUser = getUserInfo();
if (currUser != null)
{
Department department = currUser.getDepartment();
if (department != null)//部门用户
{
//通过当前登录用户orgCode过滤
daoCriterias = buildViewDaoCriteria(daoCriterias);
}else
{
String compCode = CurUserCompanyCache.getInstance().getCurCompany(getUserId(), getToken());
if (compCode != null)
{
//查询本单位及子单位下所有部门
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.EQUAL.getName(), compCode));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"-%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"-%"));
}else
{
//无orgCode条件,通过当前登录用户orgCode过滤
daoCriterias = buildViewDaoCriteria(daoCriterias);
}
}
}
Sort sort = new Sort(Sort.Direction.DESC,"time");
commonPageable.setSort(sort);
Page<NodeToipLogView> toipLogs = nodeLogViewService.findAll(daoCriterias, commonPageable);
return CommonResponseUtil.success(toipLogs);
}
/**
*
* <pre>
* 构建3D视图当前用户orgCode过滤条件(适应于Node3DVo和Link3DVo中拼接的orgCode)
* </pre>
*
* @return
*/
private List<DaoCriteria> buildViewDaoCriteria(List<DaoCriteria> daoCriterias)
{
User currUser = getUserInfo();
if (currUser != null)
{
Company company = currUser.getCompany();
Department department = currUser.getDepartment();
String compCode = company.getCompCode();
if (department == null)
{
//单位用户,查询本单位及子单位下所有部门
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.EQUAL.getName(), compCode));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"-%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"-%"));
}else
{
//部门用户,查询当前部门
String orgCode = company.getCompCode()+"-"+department.getDepmCode();
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.EQUAL.getName(), orgCode));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), orgCode+",%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+orgCode+",%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+orgCode));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"*%"));
}
}
return daoCriterias;
}
}
package com.yeejoin.amos.safety.business.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Sort;
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 com.yeejoin.amos.op.core.common.query.CommonPageable;
import com.yeejoin.amos.op.core.common.query.DaoCriteria;
import com.yeejoin.amos.op.core.common.query.QueryOperatorEnum;
import com.yeejoin.amos.op.core.common.request.CommonRequest;
import com.yeejoin.amos.op.core.common.response.CommonResponse;
import com.yeejoin.amos.op.core.util.CommonResponseUtil;
import com.yeejoin.amos.safety.business.service.INodeMsgViewService;
import com.yeejoin.amos.safety.common.cache.CurUserCompanyCache;
import com.yeejoin.amos.safety.common.entity.NodeMessageView;
import com.yeejoin.amos.security.entity.Company;
import com.yeejoin.amos.security.entity.Department;
import com.yeejoin.amos.security.entity.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
/**
*
* <pre>
* 消息Controller
* </pre>
*
* @author amos
* @version $Id: NodeMsgViewController.java, v 0.1 2019年1月2日 下午3:37:38 amos Exp $
*/
@RestController
@RequestMapping("/bizMessage")
@Api(value = "bizMessage", tags = { "消息管理API" })
public class NodeMsgViewController extends BaseController
{
@Autowired
private INodeMsgViewService nodeMsgViewService;
@PostMapping(value = "/query",produces = "application/json;charset=UTF-8")
@ApiOperation(value = "分页查询消息", notes = "分页查询消息")
public CommonResponse getMessageInfos(
@ApiParam(value = "查询条件", required = false) @RequestBody(required = false) List<CommonRequest> queryRequests,
@ApiParam(value = "分页参数", required = true) CommonPageable commonPageable)
{
List<DaoCriteria> daoCriterias = buildDaoCriterias(queryRequests);
User currUser = getUserInfo();
if (currUser != null)
{
Department department = currUser.getDepartment();
if (department != null)//部门用户
{
//通过当前登录用户orgCode过滤
daoCriterias = buildViewDaoCriteria(daoCriterias);
}else
{
String compCode = CurUserCompanyCache.getInstance().getCurCompany(getUserId(), getToken());
if (compCode != null)
{
//查询本单位及子单位下所有部门
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.EQUAL.getName(), compCode));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"-%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"-%"));
}else
{
//无orgCode条件,通过当前登录用户orgCode过滤
daoCriterias = buildViewDaoCriteria(daoCriterias);
}
}
}
Sort sort = new Sort(Sort.Direction.DESC,"time");
commonPageable.setSort(sort);
Page<NodeMessageView> messages = nodeMsgViewService.findAll(daoCriterias, commonPageable);
return CommonResponseUtil.success(messages);
}
/**
*
* <pre>
* 构建3D视图当前用户orgCode过滤条件(适应于Node3DVo和Link3DVo中拼接的orgCode)
* </pre>
*
* @return
*/
private List<DaoCriteria> buildViewDaoCriteria(List<DaoCriteria> daoCriterias)
{
User currUser = getUserInfo();
if (currUser != null)
{
Company company = currUser.getCompany();
Department department = currUser.getDepartment();
String compCode = company.getCompCode();
if (department == null)
{
//单位用户,查询本单位及子单位下所有部门
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.EQUAL.getName(), compCode));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"-%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"-%"));
}else
{
//部门用户,查询当前部门
String orgCode = company.getCompCode()+"-"+department.getDepmCode();
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.EQUAL.getName(), orgCode));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), orgCode+",%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+orgCode+",%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+orgCode));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"*%"));
}
}
return daoCriterias;
}
}
package com.yeejoin.amos.safety.business.controller;
import java.io.IOException;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
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 com.yeejoin.amos.op.core.common.response.CommonResponse;
import com.yeejoin.amos.op.core.util.CommonResponseUtil;
import com.yeejoin.amos.op.core.util.JSONUtil;
import com.yeejoin.amos.safety.business.service.INode3DVoService;
import com.yeejoin.amos.safety.business.websocket.View3DWebSocket;
import com.yeejoin.amos.safety.common.cache.CurUserCompanyCache;
import com.yeejoin.amos.safety.common.entity.Node3DVo;
import com.yeejoin.amos.safety.common.entity.RiskPoint;
import com.yeejoin.amos.safety.common.entity.dto.PatrolCheckDTO;
import com.yeejoin.amos.safety.common.entity.dto.PatrolTaskDTO;
import com.yeejoin.amos.safety.common.enums.CheckStateEnum;
import com.yeejoin.amos.safety.common.enums.View3DNodeType;
import com.yeejoin.amos.safety.common.view.View3DHandler;
import com.yeejoin.amos.security.authorization.Authorization;
import com.yeejoin.amos.security.common.remote.RemoteSecurityServer;
import com.yeejoin.amos.security.entity.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
/**
*
* <pre>
* 巡检Controller
* </pre>
*
* @author amos
* @version $Id: PatrolController.java, v 0.1 2018年12月3日 下午5:12:27 amos Exp $
*/
@RestController
@RequestMapping(value = "/patrol")
@Api(value = "patrol", tags = { "巡检API" })
public class PatrolController extends BaseController
{
@Autowired
private INode3DVoService node3DVoService;
@Autowired
private RemoteSecurityServer remoteSecurityServer;
private static final Logger logger = Logger.getLogger(PatrolController.class);
/**
*
* <pre>
* 新增巡检记录信息
* </pre>
*
* @param check
* @return
*/
@PostMapping(value = "/check",produces = "application/json;charset=UTF-8")
@ApiOperation(value = "新增巡检记录信息", notes = "新增巡检记录信息")
@Authorization(ingore = true)
public CommonResponse addXJCheck(
@ApiParam(value = "巡检记录信息", required = true) @RequestBody List<PatrolCheckDTO> patrolCheckDTOs)
{
if (patrolCheckDTOs == null)
{
return CommonResponseUtil.failure("参数为null");
}
for (PatrolCheckDTO patrolCheckDTO : patrolCheckDTOs)
{
logger.info("接收到巡检数据:"+JSONUtil.toJson(patrolCheckDTO));
RiskPoint riskPoint = businessAIEntityConverter(patrolCheckDTO);
//获取巡检点对应的node
List<Node3DVo> patrolNode3dVos = node3DVoService.findByTypeAndOid(
View3DNodeType.RISK.getName(), String.valueOf(riskPoint.getPointID()));
Node3DVo patrolNode3dVo = null;
if (patrolNode3dVos != null && patrolNode3dVos.size() > 0)
{
//更新节点显示名称
patrolNode3dVo = patrolNode3dVos.get(0);
patrolNode3dVo.setDisplayName(riskPoint.getPointName());
if (riskPoint.getStatus() != null &&
!riskPoint.getStatus().equals(patrolNode3dVo.getNodeState()))
{
//只有不合格状态有任务
if (!riskPoint.getStatus().equals(CheckStateEnum.UNQUALIFIED.getName()))
{
patrolNode3dVo.setTaskOid(null);
}
//更新数据库巡检点状态
patrolNode3dVo.setNodeState(riskPoint.getStatus());
node3DVoService.save(patrolNode3dVo);
}
}
//获取巡检人对应的node,漏检状态不需要发送巡检人位置
if (riskPoint.getStatus() != null &&
!riskPoint.getStatus().equals(CheckStateEnum.MISSPATROL.getName()))
{
List<Node3DVo> perNode3dVos = node3DVoService.findByTypeAndOid(
View3DNodeType.PERSON.getName(), String.valueOf(riskPoint.getUserID()));
Node3DVo perNode3dVo = null;
if (perNode3dVos == null || perNode3dVos.size() == 0)
{
//用户无对应的3D节点,则进行新增
User user = remoteSecurityServer.getUserbyId(String.valueOf(riskPoint.getUserID()));
perNode3dVo = new Node3DVo();
perNode3dVo.setDisplayName(user.getName());
perNode3dVo.setType(View3DNodeType.PERSON.getName());
perNode3dVo.setOid(String.valueOf(user.getId()));
}else{
perNode3dVo = perNode3dVos.get(0);
}
if (patrolNode3dVo != null && perNode3dVo != null)
{
try
{
//更新人员位置
perNode3dVo.setPosition(patrolNode3dVo.getPosition());
perNode3dVo.setRotation(patrolNode3dVo.getRotation());
perNode3dVo.setScale(patrolNode3dVo.getScale());
node3DVoService.save(perNode3dVo);
//向前端发送巡检人位置消息
View3DWebSocket.sendInfo(View3DHandler.getInstance().buildPersNodeWebsocket(perNode3dVo));
}
catch (IOException e)
{
logger.error("向前端发送巡检人位置消息失败:"+e.getMessage());
return CommonResponseUtil.failure("向前端发送巡检人位置消息失败:"+e.getMessage());
}
}
}
}
return CommonResponseUtil.success();
}
/**
*
* <pre>
* 新增巡检任务信息
* </pre>
*
* @param patrolTaskDTOs
* @return
*/
@PostMapping(value = "/task",produces = "application/json;charset=UTF-8")
@ApiOperation(value = "新增巡检任务信息", notes = "新增巡检任务信息")
@Authorization(ingore = true)
public CommonResponse addXJTask(
@ApiParam(value = "巡检记录信息", required = true) @RequestBody List<PatrolTaskDTO> patrolTaskDTOs)
{
if (patrolTaskDTOs == null)
{
return CommonResponseUtil.failure("参数为null");
}
for (PatrolTaskDTO patrolTaskDTO : patrolTaskDTOs)
{
logger.info("接收到巡检任务数据:"+JSONUtil.toJson(patrolTaskDTO));
RiskPoint riskPoint = businessAIEntityConverter(patrolTaskDTO);
if (riskPoint.getPointID() != 0)//巡检点关联任务,需要发送巡检点状态消息
{
//获取巡检点对应的node
List<Node3DVo> patrolNode3dVos = node3DVoService.findByTypeAndOid(
View3DNodeType.RISK.getName(), String.valueOf(riskPoint.getPointID()));
Node3DVo patrolNode3dVo = null;
if (patrolNode3dVos != null && patrolNode3dVos.size() == 1)
{
patrolNode3dVo = patrolNode3dVos.get(0);
//更新巡检点任务
patrolNode3dVo.setTaskOid(String.valueOf(riskPoint.getTaskID()));
node3DVoService.save(patrolNode3dVo);
}
}
}
return CommonResponseUtil.success();
}
/**
*
* <pre>
* 保存当前登陆用户选择单位
* </pre>
*
* @param XJCompany
* @return
*/
@PostMapping(value = "/save/curCompany/{orgCode}",produces = "application/json;charset=UTF-8")
@ApiOperation(value = "保存当前登陆用户选择单位", notes = "保存当前登陆用户选择单位")
public CommonResponse saveCurrCompany(
@ApiParam(value = "当前登陆用户所选单位信息", required = true) @PathVariable String orgCode)
{
CurUserCompanyCache.getInstance().putCurCompanyMap(getUserId(), getToken(), orgCode);
return CommonResponseUtil.success();
}
/**
*
* <pre>
* 进行业务对象转换
* </pre>
*
* @param patrolCheckDTO
* @return
*/
private RiskPoint businessAIEntityConverter(PatrolCheckDTO patrolCheckDTO)
{
RiskPoint riskPoint = new RiskPoint();
riskPoint.setAddress(patrolCheckDTO.getAddress() == null ? "" : patrolCheckDTO.getAddress());
riskPoint.setPointID(patrolCheckDTO.getPointID());
riskPoint.setPointNo(patrolCheckDTO.getPointNo() == null ? "" : patrolCheckDTO.getPointNo());
riskPoint.setPointName(patrolCheckDTO.getPointName() == null ? "" : patrolCheckDTO.getPointName());
riskPoint.setStatus(patrolCheckDTO.getStatus() == null ? "" : CheckStateEnum.getName(Integer.valueOf(patrolCheckDTO.getStatus())));
riskPoint.setUserID(patrolCheckDTO.getUserID());
riskPoint.setCheckID(patrolCheckDTO.getCheckID());
riskPoint.setCheckTime(patrolCheckDTO.getCheckTime());
riskPoint.setDepartment(patrolCheckDTO.getDepartment() == null ? "" : patrolCheckDTO.getDepartment());
riskPoint.setPlanName(patrolCheckDTO.getPlanName() == null ? "" : patrolCheckDTO.getPlanName());
riskPoint.setUserName(patrolCheckDTO.getUserName() == null ? "" : patrolCheckDTO.getUserName());
riskPoint.setTelephone(patrolCheckDTO.getTelephone() == null ? "" : patrolCheckDTO.getTelephone());
riskPoint.setCheckInput(patrolCheckDTO.getCheckInput());
//测试
// riskPoint.setPointID(68);
// riskPoint.setPointNo("NO14");
// riskPoint.setPointName("餐厅灶间一楼");
// riskPoint.setStatus(patrolCheckDTO.getStatus() == null ? "" : CheckStateEnum.getName(Integer.valueOf(patrolCheckDTO.getStatus())));
// riskPoint.setUserID(1);
// riskPoint.setDepartment("工程部");
// riskPoint.setUserName("张三");
return riskPoint;
}
/**
*
* <pre>
* 进行巡检任务业务对象转换
* </pre>
*
* @param patrolCheckDTO
* @return
*/
private RiskPoint businessAIEntityConverter(PatrolTaskDTO patrolTaskDTO)
{
RiskPoint riskPoint = new RiskPoint();
riskPoint.setPointID(patrolTaskDTO.getPointID());
riskPoint.setPointName(patrolTaskDTO.getPointName());
riskPoint.setTaskID(patrolTaskDTO.getTaskID());
riskPoint.setTaskName(patrolTaskDTO.getTaskName());
riskPoint.setArranger(patrolTaskDTO.getArranger());
riskPoint.setStatus(patrolTaskDTO.getStatus() == null ? "" : CheckStateEnum.getName(Integer.valueOf(patrolTaskDTO.getStatus())));
riskPoint.setExecutor(patrolTaskDTO.getExecutor());
riskPoint.setPlanTime(patrolTaskDTO.getPlanTime());
riskPoint.setContent(patrolTaskDTO.getContent());
riskPoint.setFishTime(patrolTaskDTO.getFishTime());
// riskPoint.setPointID(68);
// riskPoint.setPointName("餐厅灶间一楼");
// riskPoint.setTaskID(25);
// riskPoint.setTaskName("任务2");
// riskPoint.setArranger("王五");
// riskPoint.setExecutor("张三");
// riskPoint.setUserID(1);
// riskPoint.setPlanTime(new Date());
// riskPoint.setContent("请关闭阀门");
return riskPoint;
}
}
package com.yeejoin.amos.safety.business.controller;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.web.bind.annotation.GetMapping;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.yeejoin.amos.op.core.common.query.CommonPageable;
import com.yeejoin.amos.op.core.common.query.DaoCriteria;
import com.yeejoin.amos.op.core.common.query.QueryOperatorEnum;
import com.yeejoin.amos.op.core.common.request.CommonRequest;
import com.yeejoin.amos.op.core.common.response.CommonResponse;
import com.yeejoin.amos.op.core.util.CommonResponseUtil;
import com.yeejoin.amos.op.core.util.JSONUtil;
import com.yeejoin.amos.op.core.util.StringUtil;
import com.yeejoin.amos.safety.business.response.PatrolUserRespone;
import com.yeejoin.amos.safety.business.response.PointInfoSyn3DRespone;
import com.yeejoin.amos.safety.business.response.RouteResponse;
import com.yeejoin.amos.safety.business.service.ILink3DVoService;
import com.yeejoin.amos.safety.business.service.INode3DVoService;
import com.yeejoin.amos.safety.common.cache.CurUserCompanyCache;
import com.yeejoin.amos.safety.common.entity.Link3DVo;
import com.yeejoin.amos.safety.common.entity.Node3DVo;
import com.yeejoin.amos.safety.common.entity.dto.CoordDTO;
import com.yeejoin.amos.safety.common.enums.CheckStateEnum;
import com.yeejoin.amos.safety.common.enums.View3DNodeType;
import com.yeejoin.amos.safety.common.view.View3DHandler;
import com.yeejoin.amos.safety.core.remote.service.RemotePatrolServer;
import com.yeejoin.amos.security.authorization.Authorization;
import com.yeejoin.amos.security.entity.Company;
import com.yeejoin.amos.security.entity.Department;
import com.yeejoin.amos.security.entity.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
/**
*
* <pre>
* 界面视图Controller
* </pre>
*
* @author amos
* @version $Id: ViewController.java, v 0.1 2018年1月26日 上午11:00:16 amos Exp $
*/
@RestController
@RequestMapping(value = "/view3d")
@Api(value = "view3d", tags = { "三维视图API" })
public class View3DController extends BaseController
{
@Autowired
private INode3DVoService node3DVoService;
@Autowired
private ILink3DVoService link3DVoService;
@Autowired
private RemotePatrolServer remotePatrolServer;
private static final Logger logger = Logger.getLogger(View3DController.class);
/**
*
* <pre>
* 初始化三维视图节点
* </pre>
*
* @param type
* @return
*/
@GetMapping(value = "/initViewNode",produces = "application/json;charset=UTF-8")
@ApiOperation(value = "初始化三维视图节点", notes = "初始化三维视图节点")
public CommonResponse initViewNode(
@ApiParam(value = "节点类型", required = false) @RequestParam(required = false) String type)
{
List<Node3DVo> node3DVos = null;
boolean isAll = true;//是否查询所有与节点
List<DaoCriteria> daoCriterias = new ArrayList<>();
User currUser = getUserInfo();
if (currUser != null)
{
Department department = currUser.getDepartment();
if (department != null)//部门用户
{
//通过当前登录用户orgCode过滤
daoCriterias = buildViewDaoCriteria(daoCriterias);
}else //单位用户
{
//获取当前用户所选单位
String compCode = CurUserCompanyCache.getInstance().getCurCompany(getUserId(), getToken());
if (compCode != null)
{
//查询本单位及子单位下所有部门
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.EQUAL.getName(), compCode));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"-%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"-%"));
}else
{
//无orgCode条件,通过当前登录用户orgCode过滤
daoCriterias = buildViewDaoCriteria(daoCriterias);
}
}
}
if (StringUtil.isNotEmpty(type))
{
//查询节点类型对应的节点
//fireResource
DaoCriteria daoCriteria = new DaoCriteria();
daoCriteria.setPropertyName("type");
if("fireResource".equals(type)){
daoCriteria.setOperator(QueryOperatorEnum.IN.getName());
daoCriteria.setValue(Arrays.asList("hydrant","pool","fireCar","fireEquipment","fireChamber","fireFoamRoom"));
isAll = true;
}else if("water".equals(type)){
daoCriteria.setOperator(QueryOperatorEnum.IN.getName());
daoCriteria.setValue(Arrays.asList("hydrant","pool"));
isAll = true;
}else{
daoCriteria.setOperator(QueryOperatorEnum.EQUAL.getName());
daoCriteria.setValue(type);
isAll = false;
}
daoCriterias.add(daoCriteria);
}
node3DVos = node3DVoService.findAll(daoCriterias);
List<Node3DVo> node3DVosfilter = View3DHandler.getInstance().nodeDatafilter(node3DVos); //进行数据过滤
Map<String, List<Map<String, Object>>> viewMap = View3DHandler.getInstance()
.buildViewNodeJson(node3DVosfilter);
if (isAll)
{
return CommonResponseUtil.success(viewMap);
}else
{
List<Map<String, Object>> viewTypeList = viewMap.get(type);
if (viewTypeList == null)
{
viewTypeList = new ArrayList<Map<String, Object>>();
}
return CommonResponseUtil.success(viewTypeList);
}
}
/**
*
* <pre>
* 初始化三维视图线路
* </pre>
*
* @param subObjId
* @return
*/
@GetMapping(value = "/initViewLink",produces = "application/json;charset=UTF-8")
@ApiOperation(value = "初始化三维视图线路", notes = "初始化三维视图线路")
public CommonResponse initViewLink()
{
List<DaoCriteria> daoCriterias = new ArrayList<>();
User currUser = getUserInfo();
if (currUser != null)
{
Department department = currUser.getDepartment();
if (department != null)//部门用户
{
//通过当前登录用户orgCode过滤
daoCriterias = buildViewDaoCriteria(daoCriterias);
}else
{
String compCode = CurUserCompanyCache.getInstance().getCurCompany(getUserId(), getToken());
if (compCode != null)
{
//查询本单位及子单位下所有部门
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.EQUAL.getName(), compCode));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"-%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"-%"));
}else
{
//无orgCode条件,通过当前登录用户orgCode过滤
daoCriterias = buildViewDaoCriteria(daoCriterias);
}
}
}
List<Link3DVo> linkVos = link3DVoService.findAll(daoCriterias);
List<Link3DVo> link3DVosfilter = View3DHandler.getInstance()
.linkDatafilter(linkVos); //进行数据过滤
List<Map<String, Object>> viewMap = View3DHandler.getInstance().buildViewJson(link3DVosfilter);
return CommonResponseUtil.success(viewMap);
}
@SuppressWarnings("unchecked")
@GetMapping(value = "/node/detail",produces = "application/json;charset=UTF-8")
@ApiOperation(value = "获取节点详情", notes = "获取节点详情")
public CommonResponse getNodeDetail(
@ApiParam(value = "节点类型", required = true) @RequestParam String type,
@ApiParam(value = "节点id", required = true) @RequestParam String id)
{
Map<String, Object> patrolInfoMap = null;
if (type.equals(View3DNodeType.RISK.getName()))
{
Object object = remotePatrolServer.getPatrolInfo(id, getToken());
LinkedHashMap<String, Object> patrolInfo = (LinkedHashMap<String, Object>)object;
patrolInfoMap = View3DHandler.getInstance().buildPatrolInfo(patrolInfo);
System.out.println(object);
}
return CommonResponseUtil.success(patrolInfoMap);
}
@SuppressWarnings("unchecked")
@PostMapping(value = "/department/searchView",produces = "application/json;charset=UTF-8")
@ApiOperation(value = "根据部门检索视图节点和线路", notes = "根据部门检索视图节点和线路")
public CommonResponse getLinks(
@ApiParam(value = "查询条件", required = false) @RequestBody(required = false) List<CommonRequest> queryRequests,
@ApiParam(value = "分页参数", required = true) CommonPageable commonPageable)
{
Map<String, Object> resultMap = new HashMap<>();
List<DaoCriteria> daoCriterias = new ArrayList<DaoCriteria>();
/**
* 检索中分页查询线路信息
*/
CommonRequest dempCommonRequest = null;//部门过滤条件
String orgCodeFilter = null;//部门过滤orgCode条件
if (queryRequests != null && queryRequests.size() > 0)
{
for (CommonRequest commonRequest : queryRequests)
{
if (commonRequest.getName().equals("orgCode"))
{
dempCommonRequest = commonRequest;
break;
}
}
if (dempCommonRequest != null)
{
orgCodeFilter = dempCommonRequest.getValue().toString();
queryRequests.remove(dempCommonRequest);
}
}
List<DaoCriteria> queryDaoCriterias = buildDaoCriterias(queryRequests);
if (orgCodeFilter != null)//有orgCode条件,则过滤
{
//添加所属部门的过滤条件
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.EQUAL.getName(), orgCodeFilter));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), orgCodeFilter+",%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+orgCodeFilter+",%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+orgCodeFilter));
}else
{
User currUser = getUserInfo();
if (currUser != null)
{
Department department = currUser.getDepartment();
if (department != null)//部门用户
{
//通过当前登录用户orgCode过滤
daoCriterias = buildViewDaoCriteria(daoCriterias);
}else
{
String compCode = CurUserCompanyCache.getInstance().getCurCompany(getUserId(), getToken());
if (compCode != null)
{
//查询本单位及子单位下所有部门
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.EQUAL.getName(), compCode));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"-%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"-%"));
}else
{
//无orgCode条件,通过当前登录用户orgCode过滤
daoCriterias = buildViewDaoCriteria(daoCriterias);
}
}
}
}
queryDaoCriterias.addAll(daoCriterias);
Page<Link3DVo> searchLinkVos = link3DVoService.findAll(queryDaoCriterias, commonPageable);
List<Map<String, Object>> viewMap = View3DHandler.getInstance().buildLinkSeachJson(searchLinkVos.getContent());
Page<Map<String, Object>> viewMaps = new PageImpl<>(viewMap, commonPageable, searchLinkVos.getTotalElements());
resultMap.put("listData", viewMaps);
/**
* 查询视图中线路信息
*/
List<Link3DVo> linkVos = link3DVoService.findAll(daoCriterias);
List<Link3DVo> link3DVosfilter = View3DHandler.getInstance().linkDatafilter(linkVos); //进行数据过滤
List<Map<String, Object>> viewLinkMap = View3DHandler.getInstance().buildViewJson(link3DVosfilter);
resultMap.put("link", viewLinkMap);
/**
* 查询巡检点信息
*/
List<Node3DVo> node3DVos = null;
if (queryRequests.size() == 0)//无其他过滤条件
{
node3DVos = node3DVoService.findAll(daoCriterias);
}else
{
node3DVos = new ArrayList<>();
List<String> routeIds = new ArrayList<>();
for (Link3DVo link3DVo : linkVos)
{
routeIds.add(link3DVo.getOid());
}
if (routeIds.size() > 0)
{
Object object = remotePatrolServer.getPointsByRouteId(routeIds, getToken());
if (object != null)
{
LinkedHashMap<String, Object> rountPointIds = (LinkedHashMap<String, Object>) object;
List<DaoCriteria> nodeDaoCriterias = new ArrayList<DaoCriteria>();
for (Object pointObject : rountPointIds.values())
{
List<String> pointIds = (List<String>) pointObject;
for (Object pointId : pointIds)
{
nodeDaoCriterias.add(new DaoCriteria("oid", QueryOperatorEnum.EQUAL.getName(), pointId.toString()));
}
}
node3DVos.addAll(node3DVoService.findAll(nodeDaoCriterias));
}
}
}
List<Node3DVo> node3DVosfilter = View3DHandler.getInstance().nodeDatafilter(node3DVos); //进行数据过滤
Map<String, List<Map<String, Object>>> viewNodeMap = View3DHandler.getInstance()
.buildViewNodeJson(node3DVosfilter);
List<Map<String, Object>> viewTypeList = viewNodeMap.get(View3DNodeType.RISK.getName());
if (viewTypeList == null)
{
viewTypeList = new ArrayList<>();
}
Map<String, Object> maekerMap = new HashMap<>();
maekerMap.put(View3DNodeType.RISK.getName(), viewTypeList);
resultMap.put("points", maekerMap);
return CommonResponseUtil.success(resultMap);
}
/**
*
* <pre>
* 根据条件检索视图节点和链路
* </pre>
*
* @param type
* @param param
* @return
*/
@SuppressWarnings("unchecked")
@GetMapping(value = "/link/searchView",produces = "application/json;charset=UTF-8")
@ApiOperation(value = "根据线路检索视图节点和线路", notes = "根据条件检索视图节点和线路")
public CommonResponse searchViewNodeAndLink(
@ApiParam(value = "线路id", required = true) @RequestParam(required = true) String linkId)
{
Map<String, Object> resultMap = new HashMap<>();
/**
* 查询线路信息
*/
List<Link3DVo> link3DVos = new ArrayList<>();
Link3DVo link3DVo = link3DVoService.findOne(linkId);
link3DVos.add(link3DVo);
List<Link3DVo> link3DVosfilter = View3DHandler.getInstance().linkDatafilter(link3DVos); //进行数据过滤
List<Map<String, Object>> viewMap = View3DHandler.getInstance().buildViewJson(link3DVosfilter);
resultMap.put("link", viewMap);
/**
* 查询巡检点信息
*/
List<String> routeIds = new ArrayList<>();
routeIds.add(link3DVo.getOid());
Object object = remotePatrolServer.getPointsByRouteId(routeIds, getToken());
if (object != null)
{
LinkedHashMap<String, Object> rountPointIds = (LinkedHashMap<String, Object>) object;
List<DaoCriteria> daoCriterias = new ArrayList<DaoCriteria>();
for (Object pointObject : rountPointIds.values())
{
List<String> pointIds = (List<String>) pointObject;
for (Object pointId : pointIds)
{
daoCriterias.add(new DaoCriteria("oid", QueryOperatorEnum.EQUAL.getName(), pointId.toString()));
}
}
List<Node3DVo> node3DVos = node3DVoService.findAll(daoCriterias);
List<Node3DVo> node3DVosfilter = View3DHandler.getInstance().nodeDatafilter(node3DVos); //进行数据过滤
Map<String, List<Map<String, Object>>> viewNodeMap = View3DHandler.getInstance()
.buildViewNodeJson(node3DVosfilter);
List<Map<String, Object>> viewTypeList = viewNodeMap.get(View3DNodeType.RISK.getName());
if (viewTypeList == null)
{
viewTypeList = new ArrayList<>();
}
Map<String, Object> maekerMap = new HashMap<>();
maekerMap.put(View3DNodeType.RISK.getName(), viewTypeList);
resultMap.put("points", maekerMap);
}
return CommonResponseUtil.success(resultMap);
}
/**
*
* <pre>
* 同步巡检点和巡检线路对应的3D视图元素
* </pre>
*
* @return
*/
@SuppressWarnings("unchecked")
@PostMapping(value = "/synchronous",produces = "application/json;charset=UTF-8")
@ApiOperation(value = "同步巡检点和巡检线路对应的3D视图元素", notes = "同步巡检点和巡检线路对应的3D视图元素")
@Authorization(ingore = true)
public CommonResponse synchronousPatrolData()
{
Object object = remotePatrolServer.initViewNode();
logger.info("同步巡检点和巡检线路对应的3D视图元素:"+JSONUtil.toJson(object));
LinkedHashMap<String, Object> allData = (LinkedHashMap<String, Object>) object;
//人员信息
List<Node3DVo> perNode3DVos = node3DVoService.findByType(View3DNodeType.PERSON.getName());
Set<String> userIdSet = new HashSet<>();
Map<String, Node3DVo> perNode3DVoMap = new HashMap<>();
for (Node3DVo node3dVo : perNode3DVos)
{
perNode3DVoMap.put(node3dVo.getOid(), node3dVo);
}
/**
* 同步巡检点信息
*/
Object pointsObj = allData.get("points");
if (pointsObj != null)
{
List<Node3DVo> patrolNode3DVos = node3DVoService.findByType(View3DNodeType.RISK.getName());
Map<String, Node3DVo> node3DVoMap = new HashMap<>();
for (Node3DVo node3dVo : patrolNode3DVos)
{
node3DVoMap.put(node3dVo.getOid(), node3dVo);
}
List<LinkedHashMap<String, Object>> pointList = (List<LinkedHashMap<String, Object>>)pointsObj;
for (LinkedHashMap<String, Object> linkedHashMap : pointList)
{
//更新保存巡检点对应的节点
String oid = linkedHashMap.get("pointId") == null? "" : linkedHashMap.get("pointId").toString();
Node3DVo patrolNode3dVo = node3DVoMap.get(oid);
if (patrolNode3dVo ==null)
{
//巡检点无对应的3D节点,则进行新增
patrolNode3dVo = new Node3DVo();
patrolNode3dVo.setType(View3DNodeType.RISK.getName());
patrolNode3dVo.setOid(oid);
}else{
node3DVoMap.remove(oid);
}
if (StringUtil.isNotEmpty(linkedHashMap.get("status")))
{
patrolNode3dVo.setNodeState(CheckStateEnum.getEnum(Integer.valueOf(linkedHashMap.get("status").toString())).getName());
}
patrolNode3dVo.setDisplayName(linkedHashMap.get("pointName") == null? null : linkedHashMap.get("pointName").toString());
patrolNode3dVo.setTaskOid(linkedHashMap.get("taskId") == null? null : linkedHashMap.get("taskId").toString());
patrolNode3dVo.setRemark(JSONUtil.toJson(linkedHashMap));
Object configObj = linkedHashMap.get("config");
if (configObj != null)
{
patrolNode3dVo.setConfig(JSONUtil.toJson(configObj));
}
String coordinates = linkedHashMap.get("coordinates") == null? null : linkedHashMap.get("coordinates").toString();//坐标点
if (StringUtil.isNotEmpty(coordinates))
{
String[] xyz = coordinates.split(",");
if (xyz.length == 3)
{
CoordDTO coordDTO = new CoordDTO();
coordDTO.setX(Double.valueOf(xyz[0]));
coordDTO.setY(Double.valueOf(xyz[1]));
coordDTO.setZ(Double.valueOf(xyz[2]));
patrolNode3dVo.setPosition(JSONUtil.toJson(coordDTO));
}
}
//人员信息
Object userObj = linkedHashMap.get("users");
List<LinkedHashMap<String, Object>> pointPerList = (List<LinkedHashMap<String, Object>>)userObj;
Set<String> orgCodeSet = new HashSet<>();
StringBuilder stringBuilder = new StringBuilder();
int i = 0;
for (LinkedHashMap<String, Object> perLinkedHashMap : pointPerList)
{
String orgCode = savePerNode(perLinkedHashMap, perNode3DVoMap, userIdSet);
if (StringUtil.isNotEmpty(orgCode) && !orgCodeSet.contains(orgCode))
{
if (i != 0)
{
stringBuilder.append(",");
}
stringBuilder.append(orgCode);
i++;
orgCodeSet.add(orgCode);
}
}
//保存巡检点对应的3D节点
patrolNode3dVo.setOrgCode(stringBuilder.toString());
node3DVoService.save(patrolNode3dVo);
}
//删除无巡检点对应的节点
for (Node3DVo remNode3DVo : node3DVoMap.values())
{
remNode3DVo.setIsDelete(true);
node3DVoService.save(remNode3DVo);
}
}
/**
* 同步线路信息
*/
Object routesObj = allData.get("routes");
if (routesObj != null)
{
List<Link3DVo> link3DVoAll = link3DVoService.findAllInPathNull();
Map<String, Link3DVo> link3DVoMap = new HashMap<>();
for (Link3DVo link3DVo : link3DVoAll)
{
link3DVoMap.put(link3DVo.getOid(), link3DVo);
}
List<LinkedHashMap<String, Object>> routeList = (List<LinkedHashMap<String, Object>>)routesObj;
for (LinkedHashMap<String, Object> linkedHashMap : routeList)
{
//更新保存巡检线路对应的链路
if (linkedHashMap.get("routeId") == null)
{
continue;
}
String oid = linkedHashMap.get("routeId").toString();
Link3DVo rountLink3DVo = link3DVoMap.get(oid);
if (rountLink3DVo ==null)
{
//巡检线路无对应的3D链路,则进行新增
rountLink3DVo = new Link3DVo();
rountLink3DVo.setOid(oid);
}else{
link3DVoMap.remove(oid);
}
rountLink3DVo.setDisplayName(linkedHashMap.get("routeName") == null? null : linkedHashMap.get("routeName").toString());
rountLink3DVo.setRemark(JSONUtil.toJson(linkedHashMap));
//人员信息
Object userObj = linkedHashMap.get("patrolUsers");
List<LinkedHashMap<String, Object>> linkPerList = (List<LinkedHashMap<String, Object>>)userObj;
Set<String> orgCodeSet = new HashSet<>();
StringBuilder stringBuilder = new StringBuilder();
int i = 0;
for (LinkedHashMap<String, Object> perLinkedHashMap : linkPerList)
{
String orgCode = savePerNode(perLinkedHashMap, perNode3DVoMap, userIdSet);
if (orgCode != null && !orgCodeSet.contains(orgCode))
{
if (i != 0)
{
stringBuilder.append(",");
}
stringBuilder.append(orgCode);
orgCodeSet.add(orgCode);
i++;
}
}
//保存巡检线路对应的3D链路
rountLink3DVo.setOrgCode(stringBuilder.toString());
link3DVoService.save(rountLink3DVo);
}
//删除无巡检线路对应的链路
for (Link3DVo remLink3DVo : link3DVoMap.values())
{
remLink3DVo.setIsDelete(true);
link3DVoService.save(remLink3DVo);
}
}
/**
* 同步巡检人员信息
*/
//删除无巡检人员对应的节点
for (Node3DVo remNode3DVo : perNode3DVoMap.values())
{
remNode3DVo.setIsDelete(true);
node3DVoService.save(remNode3DVo);
}
return CommonResponseUtil.success();
}
/**
*
* <pre>
* 同步巡检线路对应的3D视图元素
* </pre>
*
* @return
*/
@PostMapping(value = "/synchronous/points",produces = "application/json;charset=UTF-8")
@ApiOperation(value = "同步巡检点对应的3D视图元素", notes = "同步巡检点对应的3D视图元素")
@Authorization(ingore = true)
public CommonResponse synchronousPatrolpoints(
@ApiParam(value = "巡检点信息", required = true) @RequestBody List<PointInfoSyn3DRespone> pointInfoSyn3DRespones)
{
if (pointInfoSyn3DRespones == null)
{
return CommonResponseUtil.failure("参数为null");
}
logger.info("同步巡检点对应的3D视图元素,接收到巡检点数据:"+JSONUtil.toJson(pointInfoSyn3DRespones));
//人员信息
Set<String> userIdSet = new HashSet<>();
/**
* 同步巡检点信息
*/
for (PointInfoSyn3DRespone pointInfoSyn3DRespone : pointInfoSyn3DRespones)
{
//更新保存巡检点对应的节点
String oid = pointInfoSyn3DRespone.getPointId();
List<Node3DVo> patrolNode3dVos = node3DVoService.findByTypeAndOid(View3DNodeType.RISK.getName(), oid);
Node3DVo patrolNode3dVo = null;
if (patrolNode3dVos == null || patrolNode3dVos.size() != 1)
{
//巡检点无对应的3D节点,则进行新增
patrolNode3dVo = new Node3DVo();
patrolNode3dVo.setType(View3DNodeType.RISK.getName());
patrolNode3dVo.setOid(oid);
}else{
patrolNode3dVo = patrolNode3dVos.get(0);
}
patrolNode3dVo.setNodeState(CheckStateEnum.getEnum(Integer.valueOf(pointInfoSyn3DRespone.getStatus())).getName());
patrolNode3dVo.setDisplayName(pointInfoSyn3DRespone.getPointName());
patrolNode3dVo.setIsDelete(pointInfoSyn3DRespone.getIsDelete());
patrolNode3dVo.setRemark(JSONUtil.toJson(pointInfoSyn3DRespone));
patrolNode3dVo.setOrgCode(pointInfoSyn3DRespone.getOrgCode());
if (pointInfoSyn3DRespone.getNodeConfigDTO() != null)
{
patrolNode3dVo.setConfig(JSONUtil.toJson(pointInfoSyn3DRespone.getNodeConfigDTO()));
}
String coordinates = pointInfoSyn3DRespone.getCoordinates();//坐标点
if (StringUtil.isNotEmpty(coordinates))
{
String[] xyz = coordinates.split(",");
if (xyz.length == 3)
{
CoordDTO coordDTO = new CoordDTO();
coordDTO.setX(Double.valueOf(xyz[0]));
coordDTO.setY(Double.valueOf(xyz[1]));
coordDTO.setZ(Double.valueOf(xyz[2]));
patrolNode3dVo.setPosition(JSONUtil.toJson(coordDTO));
}
}
//人员信息
List<PatrolUserRespone> pointPerList = pointInfoSyn3DRespone.getUsers();
StringBuilder stringBuilder = new StringBuilder();
if (pointPerList != null)
{
Set<String> orgCodeSet = new HashSet<>();
int i = 0;
for (PatrolUserRespone patrolUserRespone : pointPerList)
{
String orgCode = savePerNode(patrolUserRespone, userIdSet);
if (StringUtil.isNotEmpty(orgCode) && !orgCodeSet.contains(orgCode))
{
if (i != 0)
{
stringBuilder.append(",");
}
stringBuilder.append(orgCode);
i++;
orgCodeSet.add(orgCode);
}
}
}
//保存巡检点对应的3D节点
if (stringBuilder.length() > 0) {
patrolNode3dVo.setOrgCode(stringBuilder.toString());
}
// 设置默认rotation和scale
CoordDTO zeroCoordDTO = new CoordDTO();
zeroCoordDTO.setX(0d);
zeroCoordDTO.setY(0d);
zeroCoordDTO.setZ(0d);
patrolNode3dVo.setRotation(JSONUtil.toJson(zeroCoordDTO));
patrolNode3dVo.setScale(JSONUtil.toJson(zeroCoordDTO));
node3DVoService.save(patrolNode3dVo);
}
return CommonResponseUtil.success();
}
/**
* 线路同步
* @param routeResponseList
* @return
*/
@PostMapping(value = "/synchronous/routes",produces = "application/json;charset=UTF-8")
@ApiOperation(value = "同步线路对应的3D视图元素", notes = "同步线路对应的3D视图元素")
@Authorization(ingore = true)
public CommonResponse synchronousPatrolroutes(
@ApiParam(value = "线路信息", required = true) @RequestBody List<RouteResponse> routeResponseList)
{
if (routeResponseList == null)
{
return CommonResponseUtil.failure("参数为null");
}
logger.info("同步线路对应的3D视图元素,接收到线路数据:"+JSONUtil.toJson(routeResponseList));
//人员信息
List<Node3DVo> perNode3DVos = node3DVoService.findByType(View3DNodeType.PERSON.getName());
Set<String> userIdSet = new HashSet<>();
Map<String, Node3DVo> perNode3DVoMap = new HashMap<>();
for (Node3DVo node3dVo : perNode3DVos)
{
perNode3DVoMap.put(node3dVo.getOid(), node3dVo);
}
/**
* 同步线路信息
*/
List<Link3DVo> link3DVoAll = link3DVoService.findAllInPathNull();
Map<String, Link3DVo> link3DVoMap = new HashMap<>();
for (Link3DVo link3DVo : link3DVoAll)
{
link3DVoMap.put(link3DVo.getOid(), link3DVo);
}
for (RouteResponse route : routeResponseList)
{
//更新保存巡检线路对应的链路
if (route.getRouteId() == null)
{
continue;
}
String oid = route.getRouteId().toString();
Link3DVo rountLink3DVo = link3DVoMap.get(oid);
if (rountLink3DVo ==null)
{
//巡检线路无对应的3D链路,则进行新增
rountLink3DVo = new Link3DVo();
rountLink3DVo.setOid(oid);
}else{
link3DVoMap.remove(oid);
}
rountLink3DVo.setIsDelete(route.getIsDelete());
rountLink3DVo.setOrgCode(route.getOrgCode());
rountLink3DVo.setDisplayName(route.getRouteName() == null? null : route.getRouteName());
rountLink3DVo.setRemark(JSONUtil.toJson(route));
//人员信息
List<PatrolUserRespone> patrolUsers = route.getPatrolUsers();
Set<String> orgCodeSet = new HashSet<>();
StringBuilder stringBuilder = new StringBuilder();
int i = 0;
for (PatrolUserRespone patrolUser : patrolUsers)
{
String orgCode = savePerNode(patrolUser, perNode3DVoMap, userIdSet);
if (orgCode != null && !orgCodeSet.contains(orgCode))
{
if (i != 0)
{
stringBuilder.append(",");
}
stringBuilder.append(orgCode);
orgCodeSet.add(orgCode);
i++;
}
}
//保存巡检线路对应的3D链路
if (stringBuilder.length() > 0) {
rountLink3DVo.setOrgCode(stringBuilder.toString());
}
link3DVoService.save(rountLink3DVo);
}
return CommonResponseUtil.success();
}
/**
*
* <pre>
* 保存巡检人员对应的巡检节点
* </pre>
*
* @param linkedHashMap 巡检人员信息
* @param node3DVoMap 已有的巡检人员节点
* @param userIdSet 已更新的人员
* @return 返回人员的orgCode
*/
private String savePerNode(LinkedHashMap<String, Object> linkedHashMap,
Map<String, Node3DVo> perNode3DVoMap, Set<String> userIdSet)
{
//更新保存巡检点对应的节点
String oid = linkedHashMap.get("userId") == null? "" : linkedHashMap.get("userId").toString();
String orgCode = linkedHashMap.get("orgCode") == null? null : linkedHashMap.get("orgCode").toString();
if (userIdSet.contains(oid))
{
return orgCode;
}
Node3DVo perNode3dVo = perNode3DVoMap.get(oid);
if (perNode3dVo ==null)
{
//巡检人员无对应的3D节点,则进行新增
perNode3dVo = new Node3DVo();
perNode3dVo.setType(View3DNodeType.PERSON.getName());
perNode3dVo.setOid(oid);
}else{
perNode3DVoMap.remove(oid);
}
perNode3dVo.setDisplayName(linkedHashMap.get("userName") == null? null : linkedHashMap.get("userName").toString());
perNode3dVo.setOrgCode(orgCode);
node3DVoService.save(perNode3dVo);
userIdSet.add(oid);
return orgCode;
}
private String savePerNode(PatrolUserRespone patrolUser,
Map<String, Node3DVo> perNode3DVoMap, Set<String> userIdSet)
{
//更新保存巡检点对应的节点
String oid = patrolUser.getUserId()== null? "" : patrolUser.getUserId();
String orgCode = patrolUser.getOrgCode() == null? null : patrolUser.getOrgCode();
if (userIdSet.contains(oid))
{
return orgCode;
}
Node3DVo perNode3dVo = perNode3DVoMap.get(oid);
if (perNode3dVo ==null)
{
//巡检人员无对应的3D节点,则进行新增
perNode3dVo = new Node3DVo();
perNode3dVo.setType(View3DNodeType.PERSON.getName());
perNode3dVo.setOid(oid);
}else{
perNode3DVoMap.remove(oid);
}
perNode3dVo.setDisplayName(patrolUser.getUserName() == null? null : patrolUser.getUserName());
perNode3dVo.setOrgCode(orgCode);
node3DVoService.save(perNode3dVo);
userIdSet.add(oid);
return orgCode;
}
/**
*
* <pre>
* 保存巡检人员对应的巡检节点
* </pre>
*
* @param patrolUserRespone 巡检人员信息
* @param userIdSet 已更新的人员
* @return 返回人员的orgCode
*/
private String savePerNode(PatrolUserRespone patrolUserRespone, Set<String> userIdSet)
{
//更新保存巡检点对应的节点
String oid = patrolUserRespone.getUserId();
String orgCode = patrolUserRespone.getOrgCode();
if (userIdSet.contains(oid))
{
return orgCode;
}
List<Node3DVo> perNode3dVos = node3DVoService.findByTypeAndOid(View3DNodeType.PERSON.getName(), oid);
Node3DVo perNode3dVo = null;
if (perNode3dVos ==null || perNode3dVos.size() != 1)
{
//巡检人员无对应的3D节点,则进行新增
perNode3dVo = new Node3DVo();
perNode3dVo.setType(View3DNodeType.PERSON.getName());
perNode3dVo.setOid(oid);
}else{
perNode3dVo = perNode3dVos.get(0);
}
perNode3dVo.setDisplayName(patrolUserRespone.getUserName());
perNode3dVo.setOrgCode(orgCode);
node3DVoService.save(perNode3dVo);
userIdSet.add(oid);
return orgCode;
}
/**
*
* <pre>
* 构建3D视图当前用户orgCode过滤条件(适应于Node3DVo和Link3DVo中拼接的orgCode)
* </pre>
*
* @return
*/
private List<DaoCriteria> buildViewDaoCriteria(List<DaoCriteria> daoCriterias)
{
User currUser = getUserInfo();
if (currUser != null)
{
Company company = currUser.getCompany();
Department department = currUser.getDepartment();
String compCode = company.getCompCode();
if (department == null)
{
//单位用户,查询本单位及子单位下所有部门
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.EQUAL.getName(), compCode));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"-%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"-%"));
}else
{
//部门用户,查询当前部门
String orgCode = company.getCompCode()+"-"+department.getDepmCode();
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.EQUAL.getName(), orgCode));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), orgCode+",%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+orgCode+",%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+orgCode));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), compCode+"*%"));
daoCriterias.add(new DaoCriteria("orgCode", QueryOperatorEnum.LIKE.getName(), "%,"+compCode+"*%"));
}
}
return daoCriterias;
}
}
package com.yeejoin.amos.safety.business.controller;
import com.yeejoin.amos.op.core.common.query.CommonPageable;
import com.yeejoin.amos.op.core.common.query.DaoCriteria;
import com.yeejoin.amos.op.core.common.query.QueryOperatorEnum;
import com.yeejoin.amos.op.core.common.response.CommonResponse;
import com.yeejoin.amos.op.core.util.CommonResponseUtil;
import com.yeejoin.amos.safety.business.dao.mapper.View3DMapper;
import com.yeejoin.amos.safety.common.cache.CurUserCompanyCache;
import com.yeejoin.amos.safety.common.enums.CheckStateEnum;
import com.yeejoin.amos.safety.common.enums.View3DNodeType;
import com.yeejoin.amos.security.authorization.Authorization;
import com.yeejoin.amos.security.entity.Company;
import com.yeejoin.amos.security.entity.Department;
import com.yeejoin.amos.security.entity.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.codehaus.jackson.map.ObjectMapper;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* <pre>
* 巡检Controller
* </pre>
*
* @author amos
* @version $Id: PatrolController.java, v 0.1 2018年12月3日 下午5:12:27 amos Exp $
*/
@RestController
@RequestMapping(value = "/view3d")
@Api(value = "view3d", tags = { "3d数据检索" })
public class View3DDataController extends BaseController
{
private static final Logger logger = Logger.getLogger(View3DDataController.class);
@Autowired
private View3DMapper view3DMapper;
ObjectMapper objectMapper = new ObjectMapper();
@Authorization(ingore = true)
@GetMapping(value = "/3ddata/all",produces = "application/json;charset=UTF-8")
@ApiOperation(value = "实景右侧边栏搜索", notes = "实景右侧边栏搜索")
public CommonResponse saveCurrCompany(
@RequestParam(required = false) String type,
@RequestParam(required = false) String inputText,
@RequestParam(required = false) String routeName,
@RequestParam(required = false) String protectObjName,
@RequestParam(required = false) String dataLevel,
@RequestParam(required = false) String nodeState,
@RequestParam(required = true) int current,
@RequestParam(required = true) int pageSize) throws Exception
{
String orgCode = null;
User currUser = getUserInfo();
if (currUser != null)
{
//获取当前用户所选单位
String compCode = CurUserCompanyCache.getInstance().getCurCompany(getUserId(), getToken());
if (compCode != null)
{
//查询本单位及子单位下所有部门
Company company = currUser.getCompany();
orgCode = company.getCompCode();
}else
{
//无orgCode条件,通过当前登录用户orgCode过滤
orgCode = currUser.getOrgCode();
}
}
CommonPageable pageable = new CommonPageable( current, pageSize);
if("fireResource".equals(type)){
type = "hydrant,pool,fireCar,fireEquipment,fireChamber,fireFoamRoom";
}else if("water".equals(type)){
type = "hydrant,pool";
}
long count = view3DMapper.query3dDataPageCount(
StringUtils.trimToNull(type),
StringUtils.trimToNull(inputText),
StringUtils.trimToNull(routeName),
StringUtils.trimToNull(protectObjName),
StringUtils.trimToNull(dataLevel),StringUtils.trimToNull(orgCode),StringUtils.trimToNull(nodeState));
List<Map<String,Object>> mapList = view3DMapper.query3dDataPage(StringUtils.trimToNull(type),StringUtils.trimToNull(inputText),
StringUtils.trimToNull(routeName),
StringUtils.trimToNull(protectObjName),
StringUtils.trimToNull(dataLevel),StringUtils.trimToNull(orgCode),StringUtils.trimToNull(nodeState),pageable.getOffset(),pageable.getPageSize());
List<Map<String,Object>> newList = new ArrayList<Map<String,Object>>();
if(!CollectionUtils.isEmpty(mapList))
{
for(Map<String,Object> map: mapList)
{
Map newMap = new HashMap();
Map<String,Object> rotation = new HashMap<>();
Map<String,Object> config = new HashMap<>();
Map<String,Object> position = new HashMap<>();
Map<String,Object> scale = new HashMap<>();
if(!StringUtils.isEmpty(String.valueOf(map.get("rotation"))))
rotation = objectMapper.readValue(String.valueOf(map.get("rotation")),Map.class);
if(!StringUtils.isEmpty(String.valueOf(map.get("config"))))
config = objectMapper.readValue(String.valueOf(map.get("config")),Map.class);
if(!StringUtils.isEmpty(String.valueOf(map.get("position"))))
position = objectMapper.readValue(String.valueOf(map.get("position")),Map.class);
if(!StringUtils.isEmpty(String.valueOf(map.get("scale"))) )
scale = objectMapper.readValue(String.valueOf(map.get("scale")),Map.class);
if (!ObjectUtils.isEmpty(map.get("remark"))) {
JSONObject remark = new JSONObject(map.get("remark").toString());
JSONArray jsonArr = remark.getJSONArray("users");
if (!ObjectUtils.isEmpty(jsonArr)) {
StringBuffer person = new StringBuffer();
for (int i = 0; i < jsonArr.length(); i++) {
JSONObject userObj = jsonArr.getJSONObject(i);
if (userObj.has("userName")) {
person.append(userObj.get("userName") + ",");
}
}
if (person.length() > 0 && person.toString().endsWith(",")) {
newMap.put("person", person.toString().substring(0, person.lastIndexOf(",")));
}
}
}
if(View3DNodeType.RISK.getName().equals(map.get("type"))){
int le = CheckStateEnum.getEnum(map.get("node_state").toString()).getValue();
newMap.put("level",le);
newMap.put("levelStr", "level_"+le);//前端用于过滤几倍级别
}else{
newMap.put("level",map.get("data_level"));
}
newMap.put("rotation",rotation);
newMap.put("objKey",config.get("belongObjModel"));
newMap.put("inDoor",config.get("isIndoor"));
newMap.put("scale",scale);
newMap.put("label",map.get("display_name"));
newMap.put("code",map.get("data_code"));
newMap.put("title",map.get("node_state"));
newMap.put("routeName",map.get("route_name"));
newMap.put("type",map.get("type"));
newMap.put("typeName",map.get("typeName"));
newMap.put("displayIcon",map.get("display_icon"));
newMap.put("id",map.get("oid"));
newMap.put("position",position);
newMap.put("levelStr","level_"+String.valueOf(map.get("data_level")));
newMap.put("key",map.get("id"));
newList.add(newMap);
}
}
Page result = new PageImpl(newList,pageable,count);
return CommonResponseUtil.success(result);
}
}
package com.yeejoin.amos.safety.business.dao.mapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface BaseMapper {
}
package com.yeejoin.amos.safety.business.dao.mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface View3DMapper extends BaseMapper {
Long query3dDataPageCount(@Param("type") String type,
@Param("inputText") String inputText,
@Param("routeName") String routeName,
@Param("protectObjName") String protectObjName,
@Param("dataLevel")String dataLevel,
@Param("orgCode")String orgCode,
@Param("nodeState")String nodeState);
List<Map<String,Object>> query3dDataPage(
@Param("type") String type,
@Param("inputText") String inputText,
@Param("routeName") String routeName,
@Param("protectObjName") String protectObjName,
@Param("dataLevel")String dataLevel,
@Param("orgCode")String orgCode,
@Param("nodeState")String nodeState,
@Param("start")int start,
@Param("length")int length
);
}
package com.yeejoin.amos.safety.business.dao.repository;
import java.util.List;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import com.yeejoin.amos.op.core.jpa.IBaseRepository;
import com.yeejoin.amos.safety.common.entity.Link3DVo;
/**
*
* <pre>
* 三维视图链路dao
* </pre>
*
* @author amos
* @version $Id: ILink3DVoRepository.java, v 0.1 2018年11月28日 下午6:11:06 amos Exp
* $
*/
@Repository
public interface ILink3DVoRepository extends IBaseRepository<Link3DVo, String>
{
/**
*
* <pre>
* 查询所有链路,包括path为null的数据
* </pre>
*
* @return
*/
@Query(value="select * from toip_biz_link3dvo where is_delete=0",nativeQuery=true)
List<Link3DVo> findAllInPathNull();
}
package com.yeejoin.amos.safety.business.dao.repository;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.yeejoin.amos.op.core.jpa.IBaseRepository;
import com.yeejoin.amos.safety.common.entity.Node3DVo;
/**
*
* <pre>
* 三维视图节点dao
* </pre>
*
* @author amos
* @version $Id: INode3DVoRepository.java, v 0.1 2018年11月28日 下午6:07:42 amos Exp $
*/
@Repository
public interface INode3DVoRepository extends IBaseRepository<Node3DVo, String>
{
/**
*
* <pre>
* 根据节点类型类型查询视图节点
* </pre>
*
* @param type
* @return
*/
List<Node3DVo> findByType(String type);
/**
*
* <pre>
* 根据业务id和节点类型查询视图节点
* </pre>
*
* @param type
* @param oid
* @return
*/
List<Node3DVo> findByTypeAndOid(String type, String oid);
}
package com.yeejoin.amos.safety.business.dao.repository;
import org.springframework.stereotype.Repository;
import com.yeejoin.amos.op.core.jpa.IBaseRepository;
import com.yeejoin.amos.safety.common.entity.NodeToipLogView;
/**
*
* <pre>
* 三维节点与规则日志实体视图dao
* </pre>
*
* @author amos
* @version $Id: INodeLogViewRepository.java, v 0.1 2019年1月2日 下午2:47:13 amos Exp $
*/
@Repository
public interface INodeLogViewRepository extends IBaseRepository<NodeToipLogView, String>
{
}
package com.yeejoin.amos.safety.business.dao.repository;
import org.springframework.stereotype.Repository;
import com.yeejoin.amos.op.core.jpa.IBaseRepository;
import com.yeejoin.amos.safety.common.entity.NodeMessageView;
/**
*
* <pre>
* 三维节点与规则消息实体视图dao
* </pre>
*
* @author amos
* @version $Id: INodeMsgViewRepository.java, v 0.1 2019年1月2日 下午2:47:13 amos Exp $
*/
@Repository
public interface INodeMsgViewRepository extends IBaseRepository<NodeMessageView, String>
{
}
package com.yeejoin.amos.safety.business.response;
public class PatrolUserRespone {
/**
* 用户id
*/
private String userId;
/**
* 巡检人姓名
*/
private String userName;
/**
* 所属单位部门
*/
private String orgCode;
/**
* 部门名称
*/
private String groupName;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getOrgCode() {
return orgCode;
}
public void setOrgCode(String orgCode) {
this.orgCode = orgCode;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
}
package com.yeejoin.amos.safety.business.response;
import java.util.Date;
import java.util.List;
public class PointInfoResponse {
private int pointId;
private String pointName;
/**
* Ѳ��㼶��
*/
private String pointLevel;
private String status;
private Date time;
private String Address;
private List<PatrolUserRespone> users;
private List <AbnormalContent> abnormalContent;
public int getPointId() {
return pointId;
}
public void setPointId(int pointId) {
this.pointId = pointId;
}
public String getPointName() {
return pointName;
}
public void setPointName(String pointName) {
this.pointName = pointName;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
public List<AbnormalContent> getAbnormalContent() {
return abnormalContent;
}
public void setAbnormalContent(List<AbnormalContent> abnormalContent) {
this.abnormalContent = abnormalContent;
}
public List<PatrolUserRespone> getUsers() {
return users;
}
public void setUsers(List<PatrolUserRespone> users) {
this.users = users;
}
public String getAddress() {
return Address;
}
public void setAddress(String address) {
Address = address;
}
public String getPointLevel() {
return pointLevel;
}
public void setPointLevel(String pointLevel) {
this.pointLevel = pointLevel;
}
class AbnormalContent{
private int id;
private int checkItemId;
private String checkItemValue;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getCheckItemId() {
return checkItemId;
}
public void setCheckItemId(int checkItemId) {
this.checkItemId = checkItemId;
}
public String getCheckItemValue() {
return checkItemValue;
}
public void setCheckItemValue(String checkItemValue) {
this.checkItemValue = checkItemValue;
}
}
}
package com.yeejoin.amos.safety.business.response;
import java.util.List;
import com.yeejoin.amos.safety.common.entity.dto.NodeConfigDTO;
public class PointInfoSyn3DRespone
{
private String pointId;
private String pointName;
/**
* 坐标
*/
private String coordinates;
private String pointLevel;
private String status;
private String address;
private Boolean isDelete;
private List<PatrolUserRespone> users;
/**
* 节点配置信息
*/
private NodeConfigDTO nodeConfigDTO;
private String orgCode;
public String getPointId()
{
return pointId;
}
public void setPointId(String pointId)
{
this.pointId = pointId;
}
public String getPointName()
{
return pointName;
}
public void setPointName(String pointName)
{
this.pointName = pointName;
}
public String getCoordinates()
{
return coordinates;
}
public void setCoordinates(String coordinates)
{
this.coordinates = coordinates;
}
public String getPointLevel()
{
return pointLevel;
}
public void setPointLevel(String pointLevel)
{
this.pointLevel = pointLevel;
}
public String getStatus()
{
return status;
}
public void setStatus(String status)
{
this.status = status;
}
public String getAddress()
{
return address;
}
public void setAddress(String address)
{
this.address = address;
}
public List<PatrolUserRespone> getUsers()
{
return users;
}
public void setUsers(List<PatrolUserRespone> users)
{
this.users = users;
}
public NodeConfigDTO getNodeConfigDTO()
{
return nodeConfigDTO;
}
public void setNodeConfigDTO(NodeConfigDTO nodeConfigDTO)
{
this.nodeConfigDTO = nodeConfigDTO;
}
public Boolean getIsDelete() {
return isDelete;
}
public void setIsDelete(Boolean isDelete) {
this.isDelete = isDelete;
}
public String getOrgCode() {
return orgCode;
}
public void setOrgCode(String orgCode) {
this.orgCode = orgCode;
}
}
package com.yeejoin.amos.safety.business.response;
import java.util.List;
/**
* 巡检路线
* @author Administrator
*
*/
public class RouteResponse {
/**
* 巡检路线id
*/
private Integer routeId;
/**
* 巡检路线名称
*/
private String routeName;
/**
* 负责人
*/
private String boss;
/**
* 负责人电话
*/
private String tel;
private Boolean isDelete;
private String orgCode;
/**
* 巡检线路人员信息
*/
private List<PatrolUserRespone> patrolUsers;
public Integer getRouteId() {
return routeId;
}
public void setRouteId(Integer routeId) {
this.routeId = routeId;
}
public String getRouteName() {
return routeName;
}
public void setRouteName(String routeName) {
this.routeName = routeName;
}
public List<PatrolUserRespone> getPatrolUsers() {
return patrolUsers;
}
public void setPatrolUsers(List<PatrolUserRespone> patrolUsers) {
this.patrolUsers = patrolUsers;
}
public String getBoss() {
return boss;
}
public void setBoss(String boss) {
this.boss = boss;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public Boolean getIsDelete() {
return isDelete;
}
public void setIsDelete(Boolean isDelete) {
this.isDelete = isDelete;
}
public String getOrgCode() {
return orgCode;
}
public void setOrgCode(String orgCode) {
this.orgCode = orgCode;
}
}
package com.yeejoin.amos.safety.business.service;
import java.util.List;
import com.yeejoin.amos.op.core.jpa.IGenericManager;
import com.yeejoin.amos.safety.common.entity.Link3DVo;
/**
*
* <pre>
* 三维视图链路service
* </pre>
*
* @author amos
* @version $Id: ILink3DVoService.java, v 0.1 2018年11月28日 下午6:11:28 amos Exp $
*/
public interface ILink3DVoService extends IGenericManager<Link3DVo,String>
{
/**
*
* <pre>
* 查询所有链路,包括path为null的数据
* </pre>
*
* @return
*/
List<Link3DVo> findAllInPathNull();
}
package com.yeejoin.amos.safety.business.service;
import java.util.List;
import com.yeejoin.amos.op.core.jpa.IGenericManager;
import com.yeejoin.amos.safety.common.entity.Node3DVo;
/**
*
* <pre>
* 三维视图节点service
* </pre>
*
* @author amos
* @version $Id: INode3DVoService.java, v 0.1 2018年11月28日 下午6:07:59 amos Exp $
*/
public interface INode3DVoService extends IGenericManager<Node3DVo,String>
{
/**
*
* <pre>
* 根据节点类型类型查询视图节点
* </pre>
*
* @param type
* @return
*/
List<Node3DVo> findByType(String type);
/**
*
* <pre>
* 根据业务id和节点类型查询视图节点
* </pre>
*
* @param type
* @param oid
* @return
*/
List<Node3DVo> findByTypeAndOid(String type, String oid);
}
package com.yeejoin.amos.safety.business.service;
import com.yeejoin.amos.op.core.jpa.IGenericManager;
import com.yeejoin.amos.safety.common.entity.NodeToipLogView;
/**
*
* <pre>
* 三维节点与规则日志实体视图service
* </pre>
*
* @author amos
* @version $Id: INodeLogViewService.java, v 0.1 2019年1月2日 下午2:48:40 amos Exp $
*/
public interface INodeLogViewService extends IGenericManager<NodeToipLogView,String>
{
}
package com.yeejoin.amos.safety.business.service;
import com.yeejoin.amos.op.core.jpa.IGenericManager;
import com.yeejoin.amos.safety.common.entity.NodeMessageView;
/**
*
* <pre>
* 三维节点与规则消息实体视图service
* </pre>
*
* @author amos
* @version $Id: INodeMsgViewService.java, v 0.1 2019年1月2日 下午2:48:40 amos Exp $
*/
public interface INodeMsgViewService extends IGenericManager<NodeMessageView,String>
{
}
package com.yeejoin.amos.safety.business.service.impl;
import java.util.List;
import org.springframework.stereotype.Service;
import com.yeejoin.amos.op.core.jpa.GenericManagerImpl;
import com.yeejoin.amos.safety.business.dao.repository.ILink3DVoRepository;
import com.yeejoin.amos.safety.business.service.ILink3DVoService;
import com.yeejoin.amos.safety.common.entity.Link3DVo;
/**
*
* <pre>
* 三维视图链路service实现
* </pre>
*
* @author amos
* @version $Id: Link3DVoServiceImpl.java, v 0.1 2018年11月28日 下午6:14:51 amos Exp
* $
*/
@Service
public class Link3DVoServiceImpl extends GenericManagerImpl<Link3DVo, String>
implements ILink3DVoService
{
ILink3DVoRepository link3DVoRepository;
public Link3DVoServiceImpl(ILink3DVoRepository link3DVoRepository)
{
super(link3DVoRepository);
this.link3DVoRepository = link3DVoRepository;
}
@Override
public List<Link3DVo> findAllInPathNull()
{
return link3DVoRepository.findAllInPathNull();
}
}
\ No newline at end of file
package com.yeejoin.amos.safety.business.service.impl;
import java.util.List;
import org.springframework.stereotype.Service;
import com.yeejoin.amos.op.core.jpa.GenericManagerImpl;
import com.yeejoin.amos.safety.business.dao.repository.INode3DVoRepository;
import com.yeejoin.amos.safety.business.service.INode3DVoService;
import com.yeejoin.amos.safety.common.entity.Node3DVo;
/**
*
* <pre>
* 三维视图节点service实现
* </pre>
*
* @author amos
* @version $Id: Node3DVoServiceImpl.java, v 0.1 2018年11月28日 下午6:12:21 amos Exp
* $
*/
@Service
public class Node3DVoServiceImpl extends GenericManagerImpl<Node3DVo, String>
implements INode3DVoService
{
INode3DVoRepository node3DVoRepository;
public Node3DVoServiceImpl(INode3DVoRepository repository)
{
super(repository);
this.node3DVoRepository = repository;
}
@Override
public List<Node3DVo> findByType(String type)
{
return node3DVoRepository.findByType(type);
}
@Override
public List<Node3DVo> findByTypeAndOid(String type, String oid)
{
return node3DVoRepository.findByTypeAndOid(type, oid);
}
}
\ No newline at end of file
package com.yeejoin.amos.safety.business.service.impl;
import org.springframework.stereotype.Service;
import com.yeejoin.amos.op.core.jpa.GenericManagerImpl;
import com.yeejoin.amos.safety.business.dao.repository.INodeLogViewRepository;
import com.yeejoin.amos.safety.business.service.INodeLogViewService;
import com.yeejoin.amos.safety.common.entity.NodeToipLogView;
/**
*
* <pre>
* 三维节点与规则日志实体视图service实现
* </pre>
*
* @author amos
* @version $Id: NodeLogViewServiceImpl.java, v 0.1 2018年11月28日 下午6:14:51 amos Exp
* $
*/
@Service
public class NodeLogViewServiceImpl extends GenericManagerImpl<NodeToipLogView, String>
implements INodeLogViewService
{
public NodeLogViewServiceImpl(INodeLogViewRepository repository)
{
super(repository);
// TODO Auto-generated constructor stub
}
}
\ No newline at end of file
package com.yeejoin.amos.safety.business.service.impl;
import org.springframework.stereotype.Service;
import com.yeejoin.amos.op.core.jpa.GenericManagerImpl;
import com.yeejoin.amos.safety.business.dao.repository.INodeMsgViewRepository;
import com.yeejoin.amos.safety.business.service.INodeMsgViewService;
import com.yeejoin.amos.safety.common.entity.NodeMessageView;
/**
*
* <pre>
* 三维节点与规则消息实体视图service实现
* </pre>
*
* @author amos
* @version $Id: NodeMsgViewServiceImpl.java, v 0.1 2018年11月28日 下午6:14:51 amos Exp
* $
*/
@Service
public class NodeMsgViewServiceImpl extends GenericManagerImpl<NodeMessageView, String>
implements INodeMsgViewService
{
public NodeMsgViewServiceImpl(INodeMsgViewRepository repository)
{
super(repository);
// TODO Auto-generated constructor stub
}
}
\ No newline at end of file
package com.yeejoin.amos.safety.business.websocket;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
/**
*
* <pre>
* 3D视图WebSocket
* </pre>
*
* @author amos
* @version $Id: View3DSocket.java, v 0.1 2018年12月3日 下午6:14:02 amos Exp $
*/
@Component
@ServerEndpoint(value = "/view3d.ws")
public class View3DWebSocket
{
private static final Logger log = Logger.getLogger(View3DWebSocket.class);
// 静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
private static int onlineCount = 0;
// concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。
private static CopyOnWriteArraySet<View3DWebSocket> webSocketSet = new CopyOnWriteArraySet<View3DWebSocket>();
// 与某个客户端的连接会话,需要通过它来给客户端发送数据
private Session session;
/**
* 连接建立成功调用的方法
*/
@OnOpen
public void onOpen(Session session)
{
this.session = session;
webSocketSet.add(this); // 加入set中
addOnlineCount(); // 在线数加1
log.debug("有新连接加入!当前在线人数为" + getOnlineCount());
}
/**
* 连接关闭调用的方法
*/
@OnClose
public void onClose()
{
webSocketSet.remove(this); // 从set中删除
subOnlineCount(); // 在线数减1
log.debug("有一连接关闭!当前在线人数为" + getOnlineCount());
}
/**
* 收到客户端消息后调用的方法
*
* @param message
* 客户端发送过来的消息
*/
@OnMessage
public void onMessage(String message, Session session)
{
log.info("来自客户端的消息:" + message);
}
@OnError
public void onError(Session session, Throwable error)
{
log.error("发生错误", error);
}
public void sendMessage(String message) throws IOException
{
this.session.getBasicRemote().sendText(message);
}
/**
* 群发自定义消息
*/
public static void sendInfo(String message) throws IOException
{
log.debug("——----View3DWebSocket开始群发消息------");
log.debug("消息内容为:" + message);
for (View3DWebSocket item : webSocketSet)
{
try
{
item.sendMessage(message);
}
catch (IOException e)
{
log.error(item.session.getId() + "消息发送失败", e);
continue;
}
}
log.debug("——----View3DWebSocket结束群发消息------");
}
public static synchronized int getOnlineCount()
{
return onlineCount;
}
public static synchronized void addOnlineCount()
{
View3DWebSocket.onlineCount++;
}
public static synchronized void subOnlineCount()
{
View3DWebSocket.onlineCount--;
}
}
package com.yeejoin.amos.safety.common.cache;
import java.util.HashMap;
import java.util.Map;
/**
*
* <pre>
* 当前登录用户单位信息缓存
* </pre>
*
* @author amos
* @version $Id: CurUserCompanyCache.java, v 0.1 2018年12月29日 下午3:37:55 amos Exp $
*/
public class CurUserCompanyCache
{
private static CurUserCompanyCache instance;
//当前登录用户选择的单位的orgCode,第一个key为当前登录userId,第二个key为本次登录token
private Map<Long, Map<String, String>> curCompanyMap = new HashMap<Long, Map<String, String>>();
public static CurUserCompanyCache getInstance()
{
if (instance ==null)
{
instance = new CurUserCompanyCache();
}
return instance;
}
/**
*
* <pre>
* 缓存当前登录单位信息
* </pre>
*
* @param userId
* @param token
* @param company
*/
public void putCurCompanyMap(Long userId, String token, String orgCode)
{
Map<String, String> token_company = new HashMap<String, String>();
token_company.put(token, orgCode);
//一个用户只保存最新的登录信息
curCompanyMap.put(userId, token_company);
}
/**
*
* <pre>
* 获取当前登录单位信息
* </pre>
*
* @param userId
* @param token
* @return
*/
public String getCurCompany(Long userId, String token)
{
String orgCode = null;
Map<String, String> token_company = curCompanyMap.get(userId);
if (token_company != null)
{
orgCode = token_company.get(token);
}
return orgCode;
}
}
package com.yeejoin.amos.safety.common.cache;
import java.util.HashMap;
import java.util.Map;
import com.yeejoin.amos.safety.common.entity.dto.CoordDTO;
/**
*
* <pre>
* 巡检人员上一次巡检位置信息缓存
* </pre>
*
* @author amos
* @version $Id: UserPostionCache.java, v 0.1 2019年1月6日 下午8:34:42 amos Exp $
*/
public class UserPostionCache
{
private static UserPostionCache instance;
//key为userId, value为巡检人上一次巡检位置
private Map<String, CoordDTO> postionMap = new HashMap<String, CoordDTO>();
public static UserPostionCache getInstance()
{
if (instance ==null)
{
instance = new UserPostionCache();
}
return instance;
}
/**
*
* <pre>
* 缓存用户上一次巡检位置
* </pre>
*
* @param userId
* @param CoordDTO
*/
public void putPostionMap(String userId, CoordDTO CoordDTO)
{
postionMap.put(userId, CoordDTO);
}
/**
*
* <pre>
* 获取用户上一次巡检位置
* </pre>
*
* @param userId
* @return
*/
public CoordDTO getPostionMap(String userId)
{
return postionMap.get(userId);
}
}
package com.yeejoin.amos.safety.common.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Where;
import com.alibaba.fastjson.JSON;
import com.yeejoin.amos.op.core.entity.BusinessEntity;
import com.yeejoin.amos.safety.business.response.RouteResponse;
import com.yeejoin.amos.safety.common.entity.dto.LinkPathDTO;
/**
*
* <pre>
* 三维视图链路元素
* </pre>
*
* @author amos
* @version $Id: Link3DVo.java, v 0.1 2018年11月28日 下午6:23:07 amos Exp $
*/
@Entity
@Table(name = "toip_biz_link3dvo")
@Where(clause="is_delete=0")//表示未删除的数据
public class Link3DVo extends BusinessEntity
{
/**
* <pre>
*
* </pre>
*/
private static final long serialVersionUID = 3610831106560740034L;
/**
* id
*/
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "id", nullable = false, length = 36)
protected String id;
/**
* 显示名
*/
@Column(name = "display_name")
private String displayName;
/**
* 类型
*/
@Column(name = "type")
private String type;
/**
* 所属对象Id
*/
@Column(name = "oid")
private String oid;
/**
* 线路路径
*/
@Column(name = "path")
private String path;
/**
* 组织机构(公司+部门),多个通过“,”进行隔开
*/
@Column(name = "org_code", length = 50)
private String orgCode;
/**
* 备注
*/
@Column(name = "remark")
private String remark;
/**
* 线路业务信息
*/
@Transient
private RouteResponse routeResponse;
/**
* 线路路径
*/
@Transient
private LinkPathDTO linkPathDTO;
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public String getDisplayName()
{
return displayName;
}
public void setDisplayName(String displayName)
{
this.displayName = displayName;
}
public String getType()
{
return type;
}
public void setType(String type)
{
this.type = type;
}
public String getOid()
{
return oid;
}
public void setOid(String oid)
{
this.oid = oid;
}
public String getPath()
{
return path;
}
public void setPath(String path)
{
this.path = path;
}
public String getOrgCode()
{
return orgCode;
}
public void setOrgCode(String orgCode)
{
this.orgCode = orgCode;
}
public String getRemark()
{
return remark;
}
public void setRemark(String remark)
{
this.remark = remark;
}
public LinkPathDTO getLinkPathDTO()
{
return JSON.parseObject(path, LinkPathDTO.class);
}
public void setLinkPathDTO(LinkPathDTO linkPathDTO)
{
this.linkPathDTO = linkPathDTO;
}
public RouteResponse getRouteResponse()
{
return JSON.parseObject(remark, RouteResponse.class);
}
public void setRouteResponse(RouteResponse routeResponse)
{
this.routeResponse = routeResponse;
}
}
\ No newline at end of file
package com.yeejoin.amos.safety.common.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Where;
import com.alibaba.fastjson.JSON;
import com.yeejoin.amos.op.core.entity.BusinessEntity;
import com.yeejoin.amos.safety.business.response.PointInfoResponse;
import com.yeejoin.amos.safety.common.entity.dto.CoordDTO;
import com.yeejoin.amos.safety.common.entity.dto.NodeConfigDTO;
/**
*
* <pre>
* 三维视图节点元素
* </pre>
*
* @author amos
* @version $Id: Node3DVo.java, v 0.1 2018年11月28日 下午6:23:35 amos Exp $
*/
@Entity
@Table(name = "toip_biz_node3dvo")
@Where(clause="is_delete=0")//表示未删除的数据
public class Node3DVo extends BusinessEntity
{
/**
* <pre>
*
* </pre>
*/
private static final long serialVersionUID = 8645988369602644725L;
/**
* id
*/
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "id", nullable = false, length = 36)
protected String id;
/**
* 显示名
*/
@Column(name = "display_name")
private String displayName;
/**
* 类型,nodeVo中填充View3DNodeType中的name值
*/
@Column(name = "type")
private String type;
/**
* 节点状态,nodeVo中填充View3DNodeState中的name值
*/
@Column(name = "node_state")
private String nodeState;
/**
* 所属对象Id
*/
@Column(name = "oid")
private String oid;
/**
* 任务所属对象Id
*/
@Column(name = "task_oid")
private String taskOid;
/**
* 显示图标
*/
@Column(name = "display_icon")
private String displayIcon;
/**
* 节点位置,包括x,y,z值
*/
@Column(name = "position")
private String position;
/**
* 节点位置,包括x,y,z值
*/
@Column(name = "rotation")
private String rotation;
/**
* 节点位置,包括x,y,z值
*/
@Column(name = "scale")
private String scale;
/**
* 节点配置信息
*/
@Column(name = "config")
private String config;
/**
* 点编号
*/
@Column(name = "dataCode")
private String dataCode;
/**
* 点等级
*/
@Column(name = "data_level")
private String dataLevel;
/**
* 保护对象名称
*/
@Column(name = "protect_obj_name")
private String protectObjName;
/**
* 线路名称
*/
@Column(name = "route_name")
private String routeName;
/**
* 节点配置信息
*/
@Transient
private NodeConfigDTO nodeConfigDTO;
/**
* 节点位置,包括x,y,z值
*/
@Transient
private CoordDTO positionDTO;
/**
* 节点位置,包括x,y,z值
*/
@Transient
private CoordDTO rotationDTO;
/**
* 节点位置,包括x,y,z值
*/
@Transient
private CoordDTO scaleDTO;
/**
* 组织机构(公司+部门),多个通过“,”进行隔开
*/
@Column(name = "org_code", length = 50)
private String orgCode;
/**
* 备注
*/
@Column(name = "remark")
private String remark;
@Transient
private PointInfoResponse pointInfoResponse;
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public String getDisplayName()
{
return displayName;
}
public void setDisplayName(String displayName)
{
this.displayName = displayName;
}
public String getType()
{
return type;
}
public void setType(String type)
{
this.type = type;
}
public String getNodeState()
{
return nodeState;
}
public void setNodeState(String nodeState)
{
this.nodeState = nodeState;
}
public String getOid()
{
return oid;
}
public void setOid(String oid)
{
this.oid = oid;
}
public String getTaskOid()
{
return taskOid;
}
public void setTaskOid(String taskOid)
{
this.taskOid = taskOid;
}
public String getDataCode() {
return dataCode;
}
public void setDataCode(String dataCode) {
this.dataCode = dataCode;
}
public String getDataLevel() {
return dataLevel;
}
public void setDataLevel(String dataLevel) {
this.dataLevel = dataLevel;
}
public String getProtectObjName() {
return protectObjName;
}
public void setProtectObjName(String protectObjName) {
this.protectObjName = protectObjName;
}
public String getRouteName() {
return routeName;
}
public void setRouteName(String routeName) {
this.routeName = routeName;
}
public void setNodeConfigDTO(NodeConfigDTO nodeConfigDTO) {
this.nodeConfigDTO = nodeConfigDTO;
}
public String getDisplayIcon()
{
return displayIcon;
}
public void setDisplayIcon(String displayIcon)
{
this.displayIcon = displayIcon;
}
public String getPosition()
{
return position;
}
public void setPosition(String position)
{
this.position = position;
}
public String getRotation()
{
return rotation;
}
public void setRotation(String rotation)
{
this.rotation = rotation;
}
public String getScale()
{
return scale;
}
public void setScale(String scale)
{
this.scale = scale;
}
public String getOrgCode()
{
return orgCode;
}
public void setOrgCode(String orgCode)
{
this.orgCode = orgCode;
}
public String getRemark()
{
return remark;
}
public void setRemark(String remark)
{
this.remark = remark;
}
public String getConfig()
{
return config;
}
public void setConfig(String config)
{
this.config = config;
}
public NodeConfigDTO getNodeConfigDTO()
{
return config == null?null:JSON.parseObject(config, NodeConfigDTO.class);
}
public CoordDTO getPositionDTO()
{
return position == null?null:JSON.parseObject(position, CoordDTO.class);
}
public void setPositionDTO(CoordDTO positionDTO)
{
this.positionDTO = positionDTO;
}
public CoordDTO getRotationDTO()
{
return rotation == null?null:JSON.parseObject(rotation, CoordDTO.class);
}
public void setRotationDTO(CoordDTO rotationDTO)
{
this.rotationDTO = rotationDTO;
}
public CoordDTO getScaleDTO()
{
return scale == null?null:JSON.parseObject(scale, CoordDTO.class);
}
public void setScaleDTO(CoordDTO scaleDTO)
{
this.scaleDTO = scaleDTO;
}
public PointInfoResponse getPointInfoResponse()
{
return remark == null?null:JSON.parseObject(remark, PointInfoResponse.class);
}
public void setPointInfoResponse(PointInfoResponse pointInfoResponse)
{
this.pointInfoResponse = pointInfoResponse;
}
}
\ No newline at end of file
package com.yeejoin.amos.safety.common.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import com.yeejoin.amos.op.core.util.DateUtil;
/**
*
* <pre>
* 三维节点与规则消息实体视图
* </pre>
*
* @author amos
* @version $Id: NodeMessageView.java, v 0.1 2019年1月2日 下午2:39:52 amos Exp $
*/
@Entity
@Table(name = "toip_biz_message")
public class NodeMessageView implements Serializable
{
/**
* <pre>
*
* </pre>
*/
private static final long serialVersionUID = 292329658525267887L;
@Id
private String id;
/**
* 时间
*/
private Date time;
@Transient
private String timeStr;
/**
* 标题
*/
private String title;
/**
* 内容
*/
private String content;
/**
* 类型
*/
private String type;
/**
* 发送者
*/
private String sender;
/**
* 接收者
*/
private String receiver;
/**
* 已读者
*/
private String reader;
/**
* 业务id
*/
private String bizId;
/**
* 业务员实体名,例如com.yeejoin.amos.toip.bizrulebridge.entity.Fire
*/
private String bizclassName;
/**
* 组织机构(公司+部门),多个通过“,”进行隔开
*/
private String orgCode;
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public Date getTime()
{
return time;
}
public void setTime(Date time)
{
this.time = time;
}
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public String getContent()
{
return content;
}
public void setContent(String content)
{
this.content = content;
}
public String getType()
{
return type;
}
public void setType(String type)
{
this.type = type;
}
public String getSender()
{
return sender;
}
public void setSender(String sender)
{
this.sender = sender;
}
public String getReceiver()
{
return receiver;
}
public void setReceiver(String receiver)
{
this.receiver = receiver;
}
public String getReader()
{
return reader;
}
public void setReader(String reader)
{
this.reader = reader;
}
public String getBizId()
{
return bizId;
}
public void setBizId(String bizId)
{
this.bizId = bizId;
}
public String getTimeStr()
{
return DateUtil.getDateTimeFormat(this.time);
}
public String getBizclassName()
{
return bizclassName;
}
public void setBizclassName(String bizclassName)
{
this.bizclassName = bizclassName;
}
public String getOrgCode()
{
return orgCode;
}
public void setOrgCode(String orgCode)
{
this.orgCode = orgCode;
}
}
package com.yeejoin.amos.safety.common.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import com.yeejoin.amos.op.core.util.DateUtil;
/**
*
* <pre>
* 三维节点与规则日志实体视图
* </pre>
*
* @author amos
* @version $Id: NodeToipLogView.java, v 0.1 2019年1月2日 下午2:40:14 amos Exp $
*/
@Entity
@Table(name = "toip_biz_log")
public class NodeToipLogView implements Serializable
{
/**
* <pre>
*
* </pre>
*/
private static final long serialVersionUID = -4633712954902787071L;
@Id
private String id;
/**
* 时间
*/
private Date time = new Date();
@Transient
private String timeStr;
/**
* 内容
*/
private String context;
/**
* 类型
*/
private String type;
/**
* 业务id
*/
private String bizId;
/**
* 业务员实体名,例如com.yeejoin.amos.toip.bizrulebridge.entity.Fire
*/
private String bizclassName;
/**
* 动作id
*/
private String actionId;
/**
* ip
*/
private String ip;
/**
* 结果
*/
private String result;
/**
* 备注
*/
private String remark;
/**
* 组织机构(公司+部门),多个通过“,”进行隔开
*/
private String orgCode;
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public Date getTime()
{
return time;
}
public void setTime(Date time)
{
this.time = time;
}
public String getContext()
{
return context;
}
public void setContext(String context)
{
this.context = context;
}
public String getType()
{
return type;
}
public void setType(String type)
{
this.type = type;
}
public String getBizId()
{
return bizId;
}
public void setBizId(String bizId)
{
this.bizId = bizId;
}
public String getIp()
{
return ip;
}
public void setIp(String ip)
{
this.ip = ip;
}
public String getResult()
{
return result;
}
public void setResult(String result)
{
this.result = result;
}
public String getRemark()
{
return remark;
}
public void setRemark(String remark)
{
this.remark = remark;
}
public String getActionId()
{
return actionId;
}
public void setActionId(String actionId)
{
this.actionId = actionId;
}
public String getTimeStr()
{
return DateUtil.getDateTimeFormat(this.time);
}
public String getBizclassName()
{
return bizclassName;
}
public void setBizclassName(String bizclassName)
{
this.bizclassName = bizclassName;
}
public String getOrgCode()
{
return orgCode;
}
public void setOrgCode(String orgCode)
{
this.orgCode = orgCode;
}
}
package com.yeejoin.amos.safety.common.entity;
import java.io.Serializable;
/**
*
* <pre>
* Patrol 详情
* </pre>
*
* @author amos
* @version $Id: PatrolInfo.java, v 0.1 2019年1月7日 下午7:28:04 amos Exp $
*/
public class PatrolInfo implements Serializable
{
/**
* <pre>
*
* </pre>
*/
private static final long serialVersionUID = -6019481778977976661L;
private String key;
private String label;
private String value;
public PatrolInfo(String key, String label, String value)
{
super();
this.key = key;
this.label = label;
this.value = value;
}
public String getKey()
{
return key;
}
public void setKey(String key)
{
this.key = key;
}
public String getLabel()
{
return label;
}
public void setLabel(String label)
{
this.label = label;
}
public String getValue()
{
return value;
}
public void setValue(String value)
{
this.value = value;
}
}
package com.yeejoin.amos.safety.common.entity;
import java.util.Date;
import java.util.List;
import com.yeejoin.amos.op.core.entity.Resource;
import com.yeejoin.amos.op.core.util.DateUtil;
import com.yeejoin.amos.safety.common.entity.dto.PatrolCheckInputDTO;
/**
*
* <pre>
* 风险点
* </pre>
*
* @author amos
* @version $Id: RiskPoint.java, v 0.1 2019年1月4日 上午9:27:20 amos Exp $
*/
public class RiskPoint extends Resource
{
/**
* 风险点信息
*/
// 风险点id
private int pointID;
// 风险点编号
private String pointNo;
// 风险点名称
private String pointName;
// 风险点地址
private String address;
// 风险点状态:是否合格
private String status;
/**
* 风险点巡检信息
*/
// 记录编号
private int checkID;
// 巡检人编号
private int userID;
// 巡检时间
private Date checkTime;
// 巡检计划
private String planName;
// 巡检人
private String userName;
// 电话
private String telephone;
// 部门
private String department;
//巡检项
private List<PatrolCheckInputDTO> checkInput;
/**
* 任务信息
*/
// 任务编号
private int taskID;
// 任务名称
private String taskName;
// 安排人
private String arranger;
// 执行人
private String executor;
// 要求完成时间
private Date planTime;
// 要求完成时间
private String planTimeStr;
// 任务内容
private String content;
// 完成时间
private Date fishTime;
public int getCheckID()
{
return checkID;
}
public void setCheckID(int checkID)
{
this.checkID = checkID;
}
public int getUserID()
{
return userID;
}
public void setUserID(int userID)
{
this.userID = userID;
}
public int getPointID()
{
return pointID;
}
public void setPointID(int pointID)
{
this.pointID = pointID;
}
public String getPointNo()
{
return pointNo;
}
public void setPointNo(String pointNo)
{
this.pointNo = pointNo;
}
public String getPointName()
{
return pointName;
}
public void setPointName(String pointName)
{
this.pointName = pointName;
}
public Date getCheckTime()
{
return checkTime;
}
public void setCheckTime(Date checkTime)
{
this.checkTime = checkTime;
}
public String getAddress()
{
return address;
}
public void setAddress(String address)
{
this.address = address;
}
public String getStatus()
{
return status;
}
public void setStatus(String status)
{
this.status = status;
}
public String getPlanName()
{
return planName;
}
public void setPlanName(String planName)
{
this.planName = planName;
}
public String getUserName()
{
return userName;
}
public void setUserName(String userName)
{
this.userName = userName;
}
public String getTelephone()
{
return telephone;
}
public void setTelephone(String telephone)
{
this.telephone = telephone;
}
public String getDepartment()
{
return department;
}
public void setDepartment(String department)
{
this.department = department;
}
public List<PatrolCheckInputDTO> getCheckInput()
{
return checkInput;
}
public void setCheckInput(List<PatrolCheckInputDTO> checkInput)
{
this.checkInput = checkInput;
}
public int getTaskID()
{
return taskID;
}
public void setTaskID(int taskID)
{
this.taskID = taskID;
}
public String getTaskName()
{
return taskName;
}
public void setTaskName(String taskName)
{
this.taskName = taskName;
}
public String getArranger()
{
return arranger;
}
public void setArranger(String arranger)
{
this.arranger = arranger;
}
public String getExecutor()
{
return executor;
}
public void setExecutor(String executor)
{
this.executor = executor;
}
public Date getPlanTime()
{
return planTime;
}
public void setPlanTime(Date planTime)
{
this.planTime = planTime;
}
public String getPlanTimeStr()
{
if (planTime != null)
{
return DateUtil.date2LongStr(planTime);
}
return planTimeStr;
}
public void setPlanTimeStr(String planTimeStr)
{
this.planTimeStr = planTimeStr;
}
public String getContent()
{
return content;
}
public void setContent(String content)
{
this.content = content;
}
public Date getFishTime()
{
return fishTime;
}
public void setFishTime(Date fishTime)
{
this.fishTime = fishTime;
}
}
package com.yeejoin.amos.safety.common.entity.dto;
import java.io.Serializable;
/**
*
* <pre>
* 三维坐标点实体
* </pre>
*
* @author amos
* @version $Id: CoordDTO.java, v 0.1 2018年12月4日 下午4:24:10 amos Exp $
*/
public class CoordDTO implements Serializable
{
/**
* <pre>
*
* </pre>
*/
private static final long serialVersionUID = 6262473276965840710L;
private Double x;
private Double y;
private Double z;
public Double getX()
{
return x;
}
public void setX(Double x)
{
this.x = x;
}
public Double getY()
{
return y;
}
public void setY(Double y)
{
this.y = y;
}
public Double getZ()
{
return z;
}
public void setZ(Double z)
{
this.z = z;
}
}
\ No newline at end of file
package com.yeejoin.amos.safety.common.entity.dto;
import java.io.Serializable;
import java.util.LinkedList;
/**
*
* <pre>
* 三维坐标点线路实体
* </pre>
*
* @author amos
* @version $Id: LinkPathDTO.java, v 0.1 2018年12月4日 下午6:12:35 amos Exp $
*/
public class LinkPathDTO implements Serializable
{
/**
* <pre>
*
* </pre>
*/
private static final long serialVersionUID = 102779609691290473L;
private LinkedList<NodeCoordDTO> nodeCoordDTOs;
public LinkedList<NodeCoordDTO> getNodeCoordDTOs()
{
return nodeCoordDTOs;
}
public void setNodeCoordDTOs(LinkedList<NodeCoordDTO> nodeCoordDTOs)
{
this.nodeCoordDTOs = nodeCoordDTOs;
}
}
\ No newline at end of file
package com.yeejoin.amos.safety.common.entity.dto;
import java.io.Serializable;
/**
*
* <pre>
* 节点配置信息
* </pre>
*
* @author amos
* @version $Id: NodeConfigDTO.java, v 0.1 2019年1月7日 上午9:43:34 amos Exp $
*/
public class NodeConfigDTO implements Serializable
{
/**
* <pre>
*
* </pre>
*/
private static final long serialVersionUID = 6262473276965840710L;
/**
* 是否室内(默认false,为室外)
*/
private Boolean isIndoor = false;
/**
* 所属模型,例如floor_1’,‘floor_2’,‘floor_3’
*/
private String belongObjModel;
public Boolean getIsIndoor()
{
return isIndoor;
}
public void setIsIndoor(Boolean isIndoor)
{
this.isIndoor = isIndoor;
}
public String getBelongObjModel()
{
return belongObjModel;
}
public void setBelongObjModel(String belongObjModel)
{
this.belongObjModel = belongObjModel;
}
}
\ No newline at end of file
package com.yeejoin.amos.safety.common.entity.dto;
import java.io.Serializable;
/**
*
* <pre>
* 三维坐标点实体
* </pre>
*
* @author amos
* @version $Id: NodeCoordDTO.java, v 0.1 2018年12月4日 下午4:24:10 amos Exp $
*/
public class NodeCoordDTO implements Serializable
{
/**
* <pre>
*
* </pre>
*/
private static final long serialVersionUID = 6262473276965840710L;
/**
* 节点位置,包括x,y,z值
*/
private CoordDTO positionDTO;
/**
* 节点位置,包括x,y,z值
*/
private CoordDTO rotationDTO;
/**
* 节点位置,包括x,y,z值
*/
private CoordDTO scaleDTO;
public CoordDTO getPositionDTO()
{
return positionDTO;
}
public void setPositionDTO(CoordDTO positionDTO)
{
this.positionDTO = positionDTO;
}
public CoordDTO getRotationDTO()
{
return rotationDTO;
}
public void setRotationDTO(CoordDTO rotationDTO)
{
this.rotationDTO = rotationDTO;
}
public CoordDTO getScaleDTO()
{
return scaleDTO;
}
public void setScaleDTO(CoordDTO scaleDTO)
{
this.scaleDTO = scaleDTO;
}
}
\ No newline at end of file
package com.yeejoin.amos.safety.common.entity.dto;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
*
* <pre>
* 巡检结果
* </pre>
*
* @author amos
* @version $Id: PatrolCheckDTO.java, v 0.1 2018年12月6日 下午5:03:15 amos Exp $
*/
public class PatrolCheckDTO implements Serializable
{
/**
* <pre>
*
* </pre>
*/
private static final long serialVersionUID = -1417736509422804362L;
// 记录编号
private int checkID;
// 巡检人编号
private int userID;
// 巡检点id
private int pointID;
// 巡检点编号
private String pointNo;
// 巡检点名称
private String pointName;
// 巡检时间
private Date checkTime;
// 地址
private String address;
// 巡检状态:合格、不合格、漏检
private String status;
// 巡检计划
private String planName;
// 巡检人
private String userName;
// 电话
private String telephone;
// 部门
private String department;
// 巡检聚合状态是否改变,如果不改变则只进行规则触发,数据库状态不进行修改
private Boolean isChangeStatus;
//巡检项
private List<PatrolCheckInputDTO> checkInput;
public int getCheckID()
{
return checkID;
}
public void setCheckID(int checkID)
{
this.checkID = checkID;
}
public int getUserID()
{
return userID;
}
public void setUserID(int userID)
{
this.userID = userID;
}
public int getPointID()
{
return pointID;
}
public void setPointID(int pointID)
{
this.pointID = pointID;
}
public String getPointNo()
{
return pointNo;
}
public void setPointNo(String pointNo)
{
this.pointNo = pointNo;
}
public Date getCheckTime()
{
return checkTime;
}
public void setCheckTime(Date checkTime)
{
this.checkTime = checkTime;
}
public String getAddress()
{
return address;
}
public void setAddress(String address)
{
this.address = address;
}
public String getStatus()
{
return status;
}
public void setStatus(String status)
{
this.status = status;
}
public String getPointName()
{
return pointName;
}
public void setPointName(String pointName)
{
this.pointName = pointName;
}
public String getPlanName()
{
return planName;
}
public void setPlanName(String planName)
{
this.planName = planName;
}
public String getUserName()
{
return userName;
}
public void setUserName(String userName)
{
this.userName = userName;
}
public String getTelephone()
{
return telephone;
}
public void setTelephone(String telephone)
{
this.telephone = telephone;
}
public String getDepartment()
{
return department;
}
public void setDepartment(String department)
{
this.department = department;
}
public List<PatrolCheckInputDTO> getCheckInput()
{
return checkInput;
}
public void setCheckInput(List<PatrolCheckInputDTO> checkInput)
{
this.checkInput = checkInput;
}
public Boolean getIsChangeStatus()
{
return isChangeStatus;
}
public void setIsChangeStatus(Boolean isChangeStatus)
{
this.isChangeStatus = isChangeStatus;
}
}
package com.yeejoin.amos.safety.common.entity.dto;
import java.io.Serializable;
import java.util.Date;
/**
*
* <pre>
* 巡检检查项
* </pre>
*
* @author amos
* @version $Id: PatrolCheckInputDTO.java, v 0.1 2019年4月14日 上午9:51:17 amos Exp $
*/
public class PatrolCheckInputDTO implements Serializable
{
/**
* <pre>
*
* </pre>
*/
private static final long serialVersionUID = 8891777788830223056L;
// 巡检项值
private String inputValue;
// 巡检项名称
private String inputItemName;
// 巡检项状态
private String isOK;
// 备注
private Date remark;
public String getInputValue()
{
return inputValue;
}
public void setInputValue(String inputValue)
{
this.inputValue = inputValue;
}
public String getInputItemName()
{
return inputItemName;
}
public void setInputItemName(String inputItemName)
{
this.inputItemName = inputItemName;
}
public String getIsOK()
{
return isOK;
}
public void setIsOK(String isOK)
{
this.isOK = isOK;
}
public Date getRemark()
{
return remark;
}
public void setRemark(Date remark)
{
this.remark = remark;
}
}
package com.yeejoin.amos.safety.common.entity.dto;
import java.io.Serializable;
import java.util.Date;
/**
*
* <pre>
* 巡检任务
* </pre>
*
* @author amos
* @version $Id: PatrolTaskDTO.java, v 0.1 2018年12月19日 下午3:36:14 amos Exp $
*/
public class PatrolTaskDTO implements Serializable
{
/**
* <pre>
*
* </pre>
*/
private static final long serialVersionUID = -7952625137782765238L;
// 任务编号
private int taskID;
// 巡检点id
private int pointID;
// 巡检点名称
private String pointName;
// 任务名称
private String taskName;
// 任务状态
private String status;
// 安排人
private String arranger;
// 执行人
private String executor;
// 要求完成时间
private Date planTime;
// 任务内容
private String content;
// 完成时间
private Date fishTime;
public int getTaskID()
{
return taskID;
}
public void setTaskID(int taskID)
{
this.taskID = taskID;
}
public String getTaskName()
{
return taskName;
}
public void setTaskName(String taskName)
{
this.taskName = taskName;
}
public String getStatus()
{
return status;
}
public void setStatus(String status)
{
this.status = status;
}
public String getArranger()
{
return arranger;
}
public void setArranger(String arranger)
{
this.arranger = arranger;
}
public String getExecutor()
{
return executor;
}
public void setExecutor(String executor)
{
this.executor = executor;
}
public Date getPlanTime()
{
return planTime;
}
public void setPlanTime(Date planTime)
{
this.planTime = planTime;
}
public String getContent()
{
return content;
}
public void setContent(String content)
{
this.content = content;
}
public int getPointID()
{
return pointID;
}
public void setPointID(int pointID)
{
this.pointID = pointID;
}
public String getPointName()
{
return pointName;
}
public void setPointName(String pointName)
{
this.pointName = pointName;
}
public Date getFishTime()
{
return fishTime;
}
public void setFishTime(Date fishTime)
{
this.fishTime = fishTime;
}
}
package com.yeejoin.amos.safety.common.enums;
/**
*
* <pre>
* 巡检状态枚举
* </pre>
*
* @author amos
* @version $Id: CheckStateEnum.java, v 0.1 2018年12月11日 下午6:27:15 amos Exp $
*/
public enum CheckStateEnum{
UNPLAN("未纳入巡检计划", 0, "", "unplanned"),
QUALIFIED("合格", 1, "", "pass"), //巡检点合格
UNQUALIFIED("不合格", 2, "#DF7400", "offGrade"), //巡检点不合格
MISSPATROL("漏检", 3, "#FF0000", "miss"); //巡检点漏检
// normal NORMAL("正常")
/**
* 名称
*/
private String name;
/**
* 值
*/
private int value;
/**
* 状态颜色
*/
private String color;
/**
* 三维点上显示图标名
*/
private String showInfo;
// 构造方法
private CheckStateEnum(String name, int value, String color, String showInfo) {
this.name = name;
this.value = value;
this.color = color;
this.showInfo = showInfo;
}
/**
*
* <pre>
* 获取索引名称
* </pre>
*
* @param value
* @return
*/
public static String getName(int value) {
for (CheckStateEnum c : CheckStateEnum.values()) {
if (c.getValue() == value) {
return c.name;
}
}
return null;
}
/**
*
* <pre>
* 获取索引
* </pre>
*
* @param value
* @return
*/
public static CheckStateEnum getEnum(int value) {
for (CheckStateEnum c : CheckStateEnum.values()) {
if (c.getValue() == value) {
return c;
}
}
return null;
}
/**
*
* <pre>
* 获取索引
* </pre>
*
* @param name
* @return
*/
public static CheckStateEnum getEnum(String name) {
for (CheckStateEnum c : CheckStateEnum.values()) {
if (c.getName().equals(name)) {
return c;
}
}
return null;
}
/**
* Getter method for property <tt>name</tt>.
*
* @return property value of name
*/
public String getName() {
return name;
}
/**
* Setter method for property <tt>name</tt>.
*
* @param name
* value to be assigned to property name
*/
public void setName(String name) {
this.name = name;
}
/**
* Getter method for property <tt>value</tt>.
*
* @return property value of value
*/
public int getValue() {
return value;
}
/**
* Setter method for property <tt>value</tt>.
*
* @param value
* value to be assigned to property value
*/
public void setValue(int value) {
this.value = value;
}
public String getColor()
{
return color;
}
public void setColor(String color)
{
this.color = color;
}
public String getShowInfo()
{
return showInfo;
}
public void setShowInfo(String showInfo)
{
this.showInfo = showInfo;
}
}
package com.yeejoin.amos.safety.common.enums;
/**
*
* <pre>
* 3D视图节点类型
* </pre>
*
* @author amos
* @version $Id: View3DNodeType.java, v 0.1 2018年12月3日 上午11:56:55 amos Exp $
*/
public enum View3DNodeType {
PATROL("patrol", 1), //巡检点
RISK("risk", 2), //风险点
DATA("data", 3), //数据点
VIDEO("video", 4), //视频点
CROOM("croom", 5), //控制室
PERSON("person", 6), //人员点
TRAJECTORY("trajectory", 7); //轨迹点
/**
* 名称
*/
private String name;
/**
* 值
*/
private int value;
// 构造方法
private View3DNodeType(String name, int value) {
this.name = name;
this.value = value;
}
/**
*
* <pre>
* 获取索引名称
* </pre>
*
* @param value
* @return
*/
public static String getName(int value) {
for (View3DNodeType c : View3DNodeType.values()) {
if (c.getValue() == value) {
return c.name;
}
}
return null;
}
/**
*
* <pre>
* 获取索引
* </pre>
*
* @param value
* @return
*/
public static View3DNodeType getEnum(int value) {
for (View3DNodeType c : View3DNodeType.values()) {
if (c.getValue() == value) {
return c;
}
}
return null;
}
/**
*
* <pre>
* 获取索引
* </pre>
*
* @param name
* @return
*/
public static View3DNodeType getEnum(String name) {
for (View3DNodeType c : View3DNodeType.values()) {
if (c.getName().equals(name)) {
return c;
}
}
return null;
}
/**
* Getter method for property <tt>name</tt>.
*
* @return property value of name
*/
public String getName() {
return name;
}
/**
* Setter method for property <tt>name</tt>.
*
* @param name
* value to be assigned to property name
*/
public void setName(String name) {
this.name = name;
}
/**
* Getter method for property <tt>value</tt>.
*
* @return property value of value
*/
public int getValue() {
return value;
}
/**
* Setter method for property <tt>value</tt>.
*
* @param value
* value to be assigned to property value
*/
public void setValue(int value) {
this.value = value;
}
}
package com.yeejoin.amos.safety.common.view;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.yeejoin.amos.op.core.util.DateUtil;
import com.yeejoin.amos.op.core.util.JSONUtil;
import com.yeejoin.amos.op.core.util.StringUtil;
import com.yeejoin.amos.safety.business.response.PatrolUserRespone;
import com.yeejoin.amos.safety.business.response.PointInfoResponse;
import com.yeejoin.amos.safety.business.response.RouteResponse;
import com.yeejoin.amos.safety.common.cache.UserPostionCache;
import com.yeejoin.amos.safety.common.entity.Link3DVo;
import com.yeejoin.amos.safety.common.entity.Node3DVo;
import com.yeejoin.amos.safety.common.entity.PatrolInfo;
import com.yeejoin.amos.safety.common.entity.dto.CoordDTO;
import com.yeejoin.amos.safety.common.entity.dto.LinkPathDTO;
import com.yeejoin.amos.safety.common.entity.dto.NodeConfigDTO;
import com.yeejoin.amos.safety.common.entity.dto.NodeCoordDTO;
import com.yeejoin.amos.safety.common.enums.CheckStateEnum;
import com.yeejoin.amos.safety.common.enums.View3DNodeType;
/**
*
* <pre>
* 3D视图处理类
* </pre>
*
* @author amos
* @version $Id: View3DHandler.java, v 0.1 2018年12月3日 上午11:51:12 amos Exp $
*/
public class View3DHandler
{
/**
* 资源上下文实例
*/
private static View3DHandler instance;
public static View3DHandler getInstance()
{
if (instance == null)
{
synchronized (View3DHandler.class)
{
if (instance == null)
{
instance = new View3DHandler();
}
}
}
return instance;
}
/**
*
* <pre>
* 构建前端Json格式
* </pre>
*
* @param nodeVos
* @return
*/
public Map<String, List<Map<String, Object>>> buildViewNodeJson(List<Node3DVo> nodeVos)
{
//所有节点集合
Map<String, List<Map<String, Object>>> viewTypeMap = new HashMap<String, List<Map<String, Object>>>();
for (Node3DVo node3DVo : nodeVos)
{
if (node3DVo.getPositionDTO() == null || node3DVo.getRotationDTO() == null
|| node3DVo.getScaleDTO() == null)//如果节点无坐标
{
continue;
}
//每种类型节点集合
List<Map<String, Object>> nodeList = viewTypeMap.get(node3DVo.getType());
if (nodeList == null)
{
nodeList = new ArrayList<Map<String, Object>>();
}
Map<String, Object> nodeMap = new HashMap<String, Object>();
nodeMap.put("id", node3DVo.getOid());
nodeMap.put("type", node3DVo.getType());
nodeMap.put("key", node3DVo.getId());
PointInfoResponse pointInfoResponse = node3DVo.getPointInfoResponse();
nodeMap.put("level", node3DVo.getDataLevel()!=null?node3DVo.getDataLevel():0);
if (pointInfoResponse != null && pointInfoResponse.getPointLevel() != null)
{
nodeMap.put("level", pointInfoResponse.getPointLevel());
}
nodeMap.put("levelStr", "level_"+nodeMap.get("level").toString());//前端用于过滤几倍级别
if (node3DVo.getType().equals(View3DNodeType.RISK.getName()))
{
if (node3DVo.getTaskOid() == null)
{
String[] title = {CheckStateEnum.getEnum(node3DVo.getNodeState()).getShowInfo()};
nodeMap.put("title", title);
}else
{
String[] title = {CheckStateEnum.getEnum(node3DVo.getNodeState()).getShowInfo(), "task"};
nodeMap.put("title", title);
}
int le = CheckStateEnum.getEnum(node3DVo.getNodeState()).getValue();
nodeMap.put("level",le);
nodeMap.put("levelStr", "level_"+le);//前端用于过滤几倍级别
}else
{
nodeMap.put("title", node3DVo.getDisplayName());
}
if (StringUtil.isNotEmpty(node3DVo.getNodeState()) && "risk".equals(node3DVo.getType()))
{
int stateValue = CheckStateEnum.getEnum(node3DVo.getNodeState()).getValue();
if (stateValue > CheckStateEnum.QUALIFIED.getValue())
{
nodeMap.put("showInfo", true);//显示title提示
nodeMap.put("twinkle", true);//显示图标闪烁
}else{
nodeMap.put("showInfo", false);//隐藏title提示
nodeMap.put("twinkle", false);//隐藏图标闪烁
}
} else if (StringUtil.isNotEmpty(node3DVo.getNodeState()) && "riskSource".equals(node3DVo.getType())) {
if ("NORMAL".equals(node3DVo.getNodeState()))
{
nodeMap.put("showInfo", false);//隐藏title提示
nodeMap.put("twinkle", false);//隐藏图标闪烁
}else{
nodeMap.put("showInfo", true);//显示title提示
nodeMap.put("twinkle", true);//显示图标闪烁
nodeMap.put("title", node3DVo.getNodeState());
}
} else{
nodeMap.put("showInfo", false);//隐藏title提示
}
NodeConfigDTO nodeConfigDTO = node3DVo.getNodeConfigDTO();
if (nodeConfigDTO == null){
nodeConfigDTO = new NodeConfigDTO();
}
nodeMap.put("label", node3DVo.getDisplayName());
nodeMap.put("displayIcon", node3DVo.getDisplayIcon());
nodeMap.put("position", node3DVo.getPositionDTO());
nodeMap.put("rotation", node3DVo.getRotationDTO());
nodeMap.put("scale", node3DVo.getScaleDTO());
nodeMap.put("objKey", nodeConfigDTO.getBelongObjModel());
nodeMap.put("inDoor", nodeConfigDTO.getIsIndoor());
nodeList.add(nodeMap);
viewTypeMap.put(node3DVo.getType(), nodeList);
}
return viewTypeMap;
}
/**
*
* <pre>
* 构建前端Json格式
* </pre>
*
* @param linkVos
* @return
*/
public List<Map<String, Object>> buildViewJson(List<Link3DVo> linkVos)
{
//构建链路返回数据
List<Map<String, Object>> linkMaps = new ArrayList<Map<String, Object>>();
for (Link3DVo link3DVo : linkVos)
{
LinkPathDTO linkPathDTO = link3DVo.getLinkPathDTO();
if (linkPathDTO == null)//如果线路无path,则过滤掉
{
continue;
}
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", link3DVo.getOid());
map.put("name", link3DVo.getDisplayName());
map.put("key", link3DVo.getId());
LinkedList<NodeCoordDTO> nodeCoordDTOs = linkPathDTO.getNodeCoordDTOs();
if (nodeCoordDTOs != null && nodeCoordDTOs.size() > 0)
{
CoordDTO[] coordDTOs = new CoordDTO[nodeCoordDTOs.size()];
for (int i = 0; i < nodeCoordDTOs.size(); i++)
{
coordDTOs[i] = nodeCoordDTOs.get(i).getPositionDTO();
}
map.put("linkPath", coordDTOs);
map.put("startPoint", coordDTOs[0]);
map.put("endPoint", coordDTOs[coordDTOs.length - 1]);
}
linkMaps.add(map);
}
return linkMaps;
}
/**
*
* <pre>
* 构建前端Json格式
* </pre>
*
* @param linkVos
* @return
*/
public List<Map<String, Object>> buildLinkSeachJson(List<Link3DVo> linkVos)
{
//构建链路返回数据
List<Map<String, Object>> linkMaps = new ArrayList<Map<String, Object>>();
for (Link3DVo link3DVo : linkVos)
{
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", link3DVo.getOid());
map.put("key", link3DVo.getId());
map.put("name", link3DVo.getDisplayName());
RouteResponse routeResponse = link3DVo.getRouteResponse();
if (routeResponse != null)
{
map.put("leader", routeResponse.getBoss());
map.put("telephone", routeResponse.getTel());
StringBuilder stringBuilder = new StringBuilder();
List<PatrolUserRespone> userRespones = routeResponse.getPatrolUsers().stream().filter(user->user.getGroupName()!=null).collect(Collectors.toList());
if (userRespones != null && userRespones.size() > 0)
{
for (int i = 0; i < userRespones.size(); i++)
{
if (i > 0)
{
stringBuilder.append("、");
}
stringBuilder.append(userRespones.get(i).getGroupName());
}
}
map.put("region", stringBuilder.toString());
}
linkMaps.add(map);
}
return linkMaps;
}
/**
*
* <pre>
* 构建巡检人位置消息json
* </pre>
*
* @param persNode3DVo
* @return
*/
public String buildPersNodeWebsocket(Node3DVo persNode3DVo)
{
Map<String, Object> nodeMap = new HashMap<String, Object>();
nodeMap.put("id", persNode3DVo.getOid());
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(persNode3DVo.getDisplayName()).append("(")
.append(persNode3DVo.getOid()).append(")");
nodeMap.put("title", stringBuilder.toString());
nodeMap.put("label", persNode3DVo.getDisplayName());
nodeMap.put("type", persNode3DVo.getType());
nodeMap.put("topic", "base3d.view.point_" + persNode3DVo.getType());
nodeMap.put("key", persNode3DVo.getId());
nodeMap.put("level", 0);
nodeMap.put("levelStr", "level_0");//前端用于过滤几倍级别
nodeMap.put("position", persNode3DVo.getPositionDTO());
nodeMap.put("rotation", persNode3DVo.getRotationDTO());
nodeMap.put("scale", persNode3DVo.getScaleDTO());
List<Number[]> pathArr = new ArrayList<Number[]>();
// 上一个点 (用户id)
CoordDTO prevCoord = UserPostionCache.getInstance().getPostionMap(persNode3DVo.getOid());
if (prevCoord != null)
{
Number[] prevPoint = { prevCoord.getX(), prevCoord.getY(), prevCoord.getZ() };
// 下一个点
CoordDTO nextCoord = persNode3DVo.getPositionDTO();
Number[] nextPoint = { nextCoord.getX(), nextCoord.getY(), nextCoord.getZ() };
pathArr.add(prevPoint);
pathArr.add(nextPoint);
nodeMap.put("pathArr", pathArr);
}
nodeMap.put("showInfo", true);
return JSONUtil.toJson(nodeMap);
}
private String getPatrolProperty(Object property){
return property == null ? "" : property.toString();
}
public Map<String, Object> buildPatrolInfo(LinkedHashMap<String, Object> patrolInfo)
{
Map<String, Object> patrolMap = new HashMap<>();
List<PatrolInfo> infoMap = new ArrayList<PatrolInfo>();
PatrolInfo label = new PatrolInfo("label", "编号", getPatrolProperty(patrolInfo.get("pointNo")));
PatrolInfo name = new PatrolInfo("name", "名称", getPatrolProperty(patrolInfo.get("pointName")));
PatrolInfo status = new PatrolInfo("status", "状态", getPatrolProperty(patrolInfo.get("isOK")));
PatrolInfo department = new PatrolInfo("department", "责任部门", getPatrolProperty(patrolInfo.get("group")));
PatrolInfo chargeUser= new PatrolInfo("chargeUser", "责任人", getPatrolProperty(patrolInfo.get("checkUserName")));
PatrolInfo contact= new PatrolInfo("contact", "联系方式", getPatrolProperty(patrolInfo.get("contact")));
PatrolInfo link = new PatrolInfo("link", "巡检线路", getPatrolProperty(patrolInfo.get("routeName")));
PatrolInfo time = new PatrolInfo("time", "巡检时间", patrolInfo.get("checkTime")==null?"":DateUtil.long2LongStr(Long.valueOf(patrolInfo.get("checkTime").toString())));
PatrolInfo plan = new PatrolInfo("plan", "巡检计划", getPatrolProperty(patrolInfo.get("planRemark")));
infoMap.add(label);
infoMap.add(name);
infoMap.add(status);
infoMap.add(department);
infoMap.add(chargeUser);
infoMap.add(contact);
infoMap.add(link);
infoMap.add(time);
infoMap.add(plan);
patrolMap.put("info", infoMap);
patrolMap.put("photosUrl", patrolInfo.get("photosUrl"));
return patrolMap;
}
/**
*
* <pre>
* 进行当前用户数据过滤
* </pre>
*
* @param node3DVos
* @param user 当前用户
* @return
*/
public List<Node3DVo> nodeDatafilter(List<Node3DVo> node3DVos)
{
/**
* 进行数据过滤
*/
List<Node3DVo> node3DVosfilter = new ArrayList<>();
for (Node3DVo node3dVo : node3DVos)
{
if (StringUtil.isNotEmpty(node3dVo.getPositionDTO()) && StringUtil.isNotEmpty(node3dVo.getRotationDTO())
&& StringUtil.isNotEmpty(node3dVo.getScaleDTO()))//如果节点无坐标,则过滤掉
{
node3DVosfilter.add(node3dVo);
}
}
return node3DVosfilter;
}
/**
*
* <pre>
* 进行线路数据过滤
* </pre>
*
* @param link3DVos
* @return
*/
public List<Link3DVo> linkDatafilter(List<Link3DVo> link3DVos)
{
/**
* 进行数据过滤
*/
List<Link3DVo> link3DVosfilter = new ArrayList<>();
for (Link3DVo link3DVo : link3DVos)
{
if (StringUtil.isNotEmpty(link3DVo.getPath()))//如果线路无path,则过滤掉
{
link3DVosfilter.add(link3DVo);
}
}
return link3DVosfilter;
}
}
\ No newline at end of file
package com.yeejoin.amos.safety.core.remote.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import com.yeejoin.amos.op.core.common.response.CommonResponse;
import com.yeejoin.amos.op.core.util.ApplicationConfig;
import com.yeejoin.amos.op.core.util.Constants;
/**
*
* <pre>
* 巡检系统远程调用
* </pre>
*
* @author amos
* @version $Id: RemotePatrolServer.java, v 0.1 2018年12月5日 下午4:38:27 amos Exp $
*/
@Service("remotePatrolServer")
public class RemotePatrolServer
{
@Autowired
private ApplicationConfig applicationConfig;
private final RestTemplate restTemplate;
public RemotePatrolServer()
{
this.restTemplate = new RestTemplate();
}
/**
*
* <pre>
* 初始化巡检系统巡检点状态、巡检人员数据
* </pre>
*
* @return
*/
public Object initViewNode()
{
String url = applicationConfig.getParamValueStr("params.remotePatrolUrl");
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType
.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
headers.add("X-From-Service", "true");
HttpEntity<String> formEntity = new HttpEntity<String>(headers);
CommonResponse commonResponse = (CommonResponse)restTemplate.exchange(url + "api/check/viewModule/initData",
HttpMethod.GET, formEntity, CommonResponse.class).getBody();
if (commonResponse != null && commonResponse.getResult().equals(Constants.RESULT_SUCCESS) )
{
return commonResponse.getDataList();
}
return null;
}
/**
*
* <pre>
* 初始化巡检系统巡检点状态、巡检人员数据
* </pre>
*
* @return
*/
public Object getPatrolInfo(String patrolId, String token)
{
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("pointID", Integer.valueOf(patrolId));
String url = applicationConfig.getParamValueStr("params.remotePatrolUrl");
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType
.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
headers.add("X-Access-Token", token);
headers.add("X-From-Service", "true");
HttpEntity<Map<String, Integer>> formEntity = new HttpEntity<Map<String, Integer>>(map, headers);
CommonResponse commonResponse = (CommonResponse)restTemplate.exchange(url + "api/spc/check-detail",
HttpMethod.POST, formEntity, CommonResponse.class).getBody();
if (commonResponse != null && commonResponse.getResult().equals(Constants.RESULT_SUCCESS) )
{
return commonResponse.getDataList();
}
return null;
}
/**
*
* <pre>
* 根据线路Id查询巡检点信息
* </pre>
*
* @param routeId
* @return
*/
public Object getPointsByRouteId(List<String> routeIds, String token)
{
Map<String, List<String>> map = new HashMap<String, List<String>>();
map.put("routeIDs", routeIds);
String url = applicationConfig.getParamValueStr("params.remotePatrolUrl");
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType
.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
headers.add("X-Access-Token", token);
headers.add("X-From-Service", "true");
HttpEntity<Map<String, List<String>>> formEntity = new HttpEntity<Map<String, List<String>>>(map, headers);
CommonResponse commonResponse = (CommonResponse)restTemplate.exchange(url + "api/route/points",
HttpMethod.POST, formEntity, CommonResponse.class).getBody();
if (commonResponse != null && commonResponse.getResult().equals(Constants.RESULT_SUCCESS) )
{
return commonResponse.getDataList();
}
return null;
}
}
\ No newline at end of file
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>YeeSafety3DStart</artifactId>
<name>YeeSafety3DStart</name>
<parent>
<groupId>com.yeejoin.amos</groupId>
<artifactId>YeeSafety3DRoot</artifactId>
<version>1.1.0</version>
</parent>
<dependencies>
<!-- 业务模块jar -->
<dependency>
<groupId>com.yeejoin.amos</groupId>
<artifactId>YeeSafety3DServer</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
<!-- maven打包时将lib提取到jar同目录,将配置文件提取到jar目录/config/下 -->
<build>
<resources>
<!-- 先指定 src/main/resources下所有文件及文件夹为资源文件 -->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
<!-- 过滤不需要引用的文件 -->
<excludes>
<exclude>package.xml</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<!-- 添加index则不从mainfest中读取classpath,而是从Index.list中读取 -->
<!-- <index>true</index> -->
<manifest>
<mainClass>com.yeejoin.amos.AmosSafetyStart</mainClass>
<!-- to create a class path to your dependecies you have to fill true
in this field -->
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<!--<classpathLayoutType>custom</classpathLayoutType> <customClasspathLayout>
lib/ artifact.groupId. {artifact.artifactId}.$${artifact.extension} </customClasspathLayout> -->
</manifest>
<manifestEntries>
<Class-Path>./</Class-Path>
</manifestEntries>
</archive>
<!-- <excludes> <exclude>config/**</exclude> </excludes> -->
<includes>
<include>**/**.class</include>
</includes>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<!-- not append assembly id in release file name -->
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/resources/package.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.yeejoin.amos;
import java.io.IOException;
import java.net.URISyntaxException;
import org.apache.log4j.Logger;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.core.env.Environment;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
*
* <pre>
* 服务启动类
* </pre>
*
* @author amos
* @version $Id: AmosSafetyStart.java, v 0.1 2018年11月26日 下午4:56:29 amos Exp $
*/
@SpringBootApplication
@EnableTransactionManagement
@EnableConfigurationProperties
@EnableSwagger2
@ServletComponentScan
@EnableDiscoveryClient
@EnableFeignClients
@EnableHystrix
// @Configuration
// @EnableApolloConfig
@MapperScan(basePackages = { "com.yeejoin.amos.safety.business.dao.mapper" })
public class AmosSafetyStart
{
private static final Logger log = Logger.getLogger(AmosSafetyStart.class);
/**
* 启动amosop-server
*
* @param args
* @throws IOException
* @throws URISyntaxException
*/
public static void main(String[] args)
{
log.info("start Service..........");
try
{
SpringApplication application = new SpringApplication(
AmosSafetyStart.class);
Environment environment = application.run(args).getEnvironment();
log.info("SwaggerUI: http://localhost:"
+ environment.getProperty("server.port") + "/swagger-ui.html");
}
catch (Exception e)
{
System.out.println("error occur when run server! " + e);
}
}
}
\ No newline at end of file
package com.yeejoin.amos.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.core.annotation.Order;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.stereotype.Component;
/**
* <pre>
* 跨域处理
* </pre>
*
* @author SmartRay
* @version CrossDomainFilter.java v0.1
* @time 2016-9-7 9:48:10
*/
@Component(value = "crossDomainFilter")
@EnableScheduling
@Order(0)
public class CrossDomainFilter implements Filter
{
public void destroy()
{
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException
{
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
// 允许所有域进行访问
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin") == null ? "*" : request.getHeader("Origin"));
// 允许的方法
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods","GET,POST,DELETE,OPTIONS,PUT");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers","Origin, X-Requested-With, X-Access-Token, X-Api-Key, Content-Type, Accept, Cache-Control, Cookie");
chain.doFilter(req, res);
}
public void init(FilterConfig arg0) throws ServletException
{
}
}
app.id=YeejoinAmosIot
\ No newline at end of file
dev.meta=http://172.16.11.35:10101
fat.meta=http://172.16.11.35:10103
pro.meta=http://172.16.11.35:10105
\ No newline at end of file
spring.application.name = AmosSafety3D
eureka.client.serviceUrl.defaultZone = http://172.16.3.3:10500/eureka/
eureka.client.register-with-eureka = true
eureka.client.fetch-registry = true
eureka.client.healthcheck.enabled = true
eureka.instance.hostname = ${spring.cloud.client.ipAddress}
eureka.instance.statusPageUrlPath = ${management.context-path}/info
eureka.instance.healthCheckUrlPath = ${management.context-path}/health
eureka.instance.preferIpAddress = true
eureka.instance.instance-id = ${spring.cloud.client.ipAddress}:${server.port}
eureka.instance.lease-expiration-duration-in-seconds = 10
eureka.instance.lease-renewal-interval-in-seconds = 5
server.port = 9000
#DB properties:
spring.datasource.url = jdbc:mysql://172.16.11.33:3306/fire_auto_system?useSSL=false&&allowMultiQueries=true
spring.datasource.username = root
spring.datasource.password = admin_1234
# HikariCP settings
# spring.datasource.hikari.*
# contection life time (ms)
spring.datasource.hikari.maxLifetime = 1765000
#((core_count*2)+effective_spindle_count
spring.datasource.hikari.maximum-pool-size = 10
# Keep the connection alive if idle for a long time (needed in production)
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
#JPA Configuration:
# Show or not log for each sql query
spring.jpa.show-sql = true
# Hibernate ddl auto (create, create-drop, update): with "update" the database
# schema will be automatically updated accordingly to java entities found in
# the project
spring.jpa.hibernate.ddl-auto = none
# Naming strategy
#spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.jpa.database-platform = org.hibernate.dialect.MySQLDialect
#mybatis mapper file
mybatis.mapper-locations = classpath:db/mapper/*.xml
# mybatis entity package
mybatis.type-aliases-package = com.yeejoin.amos.op.business.entity.mybatis
#liquibase
liquibase.change-log = classpath:/db/changelog/changelog-master.xml
params.remoteurl=http://127.0.0.1:8800/
params.time = 5
params.period = 1800
#Activiti
spring.activiti.check-process-definitions=false
spring.activiti.process-definition-location-suffixes=**.bpmn20.xml", **.bpmn,**.drl
spring.aop.auto=true
# xss security filter\uFF1ARequestBodyDecode\u3001RequestGetDecode\u3001XssSecurity\u3001SqlInputSecurity
params.xssSecurity = false
#
params.remotePatrolUrl=http://127.0.0.1:8081/
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">
<!-- 基结构及初始化数据-->
<include file="./init_structure.sql" relativeToChangelogFile="true"/>
<!-- 初始化数据 V1.0.0-->
<include file="initdata-1.0.0.xml" relativeToChangelogFile="true" />
<!-- 规则数据改变脚本-->
<include file="./rule_update.sql" relativeToChangelogFile="true"/>
<!-- V1.1.0-->
<include file="initdata-1.1.0.xml" relativeToChangelogFile="true" />
</databaseChangeLog>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
<changeSet author="guowubin" id="1546826243025-1">
<preConditions onFail="MARK_RAN">
<not>
<columnExists tableName="toip_biz_node3dvo" columnName="config" />
</not>
</preConditions>
<comment>add column config</comment>
<sql>
ALTER TABLE `toip_biz_node3dvo` ADD COLUMN `config` varchar(255) DEFAULT NULL COMMENT '节点配置信息' AFTER `scale`;
</sql>
</changeSet>
<changeSet author="guowubin" id="1546826243025-2">
<preConditions onFail="MARK_RAN">
<columnExists tableName="toip_biz_link3dvo" columnName="path" />
</preConditions>
<comment>alter column path</comment>
<sql>
alter table `toip_biz_link3dvo` modify column `path` varchar(2000);
</sql>
</changeSet>
<changeSet author="guowubin" id="1548244858654-2">
<preConditions onFail="MARK_RAN">
<tableExists tableName="toip_sys_log" />
</preConditions>
<comment>delete data table toip_sys_log</comment>
<sql>
delete from toip_sys_log where context like '触发了%_%';
</sql>
</changeSet>
</databaseChangeLog>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
<changeSet author="guowubin" id="1555213056033-1">
<preConditions onFail="MARK_RAN">
<not>
<columnExists tableName="toip_biz_node3dvo" columnName="task_oid" />
</not>
</preConditions>
<comment>add column config</comment>
<sql>
ALTER TABLE `toip_biz_node3dvo` ADD COLUMN `task_oid` varchar(36) DEFAULT NULL COMMENT '节点任务id' AFTER `oid`;
</sql>
</changeSet>
<changeSet author="guowubin" id="1555213056033-2">
<preConditions onFail="MARK_RAN">
<columnExists tableName="toip_rm_action" columnName="text_hints_data" />
</preConditions>
<comment>update column text_hints_data</comment>
<sql>
UPDATE `toip_rm_action` SET `text_hints_data` = '[{\"name\":\"title\",\"displayname\":\"标题\",\"value\":\"巡检合格\",\"enable\":true},{\"name\":\"content\",\"displayname\":\"内容\",\"value\":\"{#bizobj.department}-{#bizobj.userName}:{#bizobj.pointName}({#bizobj.pointNo})巡检合格!\",\"enable\":true}]' WHERE `name` = '巡检合格';
UPDATE `toip_rm_action` SET `text_hints_data` = '[{\"name\":\"title\",\"displayname\":\"标题\",\"value\":\"巡检不合格\",\"enable\":true},{\"name\":\"content\",\"displayname\":\"内容\",\"value\":\"{#bizobj.department}-{#bizobj.userName}:{#bizobj.pointName}({#bizobj.pointNo})巡检不合格!\",\"enable\":true}]' WHERE `name` = '巡检不合格';
UPDATE `toip_rm_action` SET `text_hints_data` = '[{\"name\":\"title\",\"displayname\":\"标题\",\"value\":\"巡检点漏检\",\"enable\":true},{\"name\":\"content\",\"displayname\":\"内容\",\"value\":\"{#bizobj.department}-{#bizobj.userName}:{#bizobj.pointName}({#bizobj.pointNo})漏检!\",\"enable\":true}]' WHERE `name` = '漏检';
</sql>
</changeSet>
<changeSet author="maoying" id="1557133365000-1">
<preConditions onFail="MARK_RAN">
<not>
<columnExists tableName="toip_biz_node3dvo" columnName="data_level" />
</not>
</preConditions>
<comment>add column data_level</comment>
<sql>
ALTER TABLE `toip_biz_node3dvo` ADD COLUMN `data_level` varchar(32) DEFAULT NULL COMMENT '级别';
</sql>
</changeSet>
<changeSet author="maoying" id="1557133365000-2">
<preConditions onFail="MARK_RAN">
<not>
<columnExists tableName="toip_biz_node3dvo" columnName="data_code" />
</not>
</preConditions>
<comment>add column data_code</comment>
<sql>
ALTER TABLE `toip_biz_node3dvo` ADD COLUMN `data_code` varchar(32) DEFAULT NULL COMMENT '编号';
</sql>
</changeSet>
<changeSet author="maoying" id="1557133365000-3">
<preConditions onFail="MARK_RAN">
<not>
<columnExists tableName="toip_biz_node3dvo" columnName="protect_obj_name" />
</not>
</preConditions>
<comment>add column protect_obj_name</comment>
<sql>
ALTER TABLE `toip_biz_node3dvo` ADD COLUMN `protect_obj_name` varchar(512) DEFAULT NULL COMMENT '保护对象名称';
</sql>
</changeSet>
<changeSet author="maoying" id="1557133365000-4">
<preConditions onFail="MARK_RAN">
<not>
<columnExists tableName="toip_biz_node3dvo" columnName="route_name" />
</not>
</preConditions>
<comment>add column route_name</comment>
<sql>
ALTER TABLE `toip_biz_node3dvo` ADD COLUMN `route_name` varchar(512) DEFAULT NULL COMMENT '线路的名称';
</sql>
</changeSet>
</databaseChangeLog>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.safety.business.dao.mapper.View3DMapper">
<select id="query3dDataPageCount" resultType="long">
SELECT
count(1)
FROM
toip_biz_node3dvo bn
WHERE
1 = 1
<if test="inputText!=null" >
AND (
bn.display_name LIKE '%${inputText}%'
OR bn.data_code LIKE '%${inputText}%'
)
</if>
<if test="protectObjName!=null">
AND bn.protect_obj_name LIKE '%${protectObjName}%'
</if>
<if test="routeName!=null">
AND bn.route_name LIKE '%${routeName}%'
</if>
<if test="dataLevel!=null" >
AND bn.data_level = '${dataLevel}'
</if>
<if test="orgCode!=null" >
AND bn.org_code LIKE '%${orgCode}%'
</if>
<if test="nodeState!=null" >
AND bn.node_state = ${nodeState}
</if>
<if test="type!=null" >
AND bn.type = '${type}'
</if>
</select>
<select id="query3dDataPage" resultType="java.util.Map">
SELECT
IFNULL(`id`,'')id,
IFNULL(`display_name`,'')display_name,
IFNULL(`type`,'')type,
case
when `type` = 'riskSource' then
'风险点'
when `type` = 'risk' then
'巡检点'
when `type` = 'impEquipment' then
'重点设备'
when `type` = 'monitorEquipment' then
'探测器'
when `type` = 'hydrant' then
'消防栓'
when `type` = 'pool' then
'消防池'
when `type` = 'fireCar' then
'消防车'
when `type` = 'fureEquipment' then
'灭火器材'
when `type` = 'fireChamber' then
'消防小室'
when `type` = 'fireFoamRoom' then
'消防泡沫间'
when `type` = 'video' then
'监控设备'
else
'其他'
end typeName,
IFNULL(`node_state`,'')node_state,
IFNULL(`oid`,'')oid,
IFNULL(`task_oid`,'')task_oid,
IFNULL(`org_code`,'')org_code,
IFNULL(`remark`,'')remark,
IFNULL(`display_icon`,'')display_icon,
IFNULL(`position`,'')position,
IFNULL(`rotation`,'')rotation,
IFNULL(`scale`,'')scale,
IFNULL(`config`,'')config,
IFNULL(`create_date`,'')create_date,
IFNULL(`update_date`,'')update_date,
IFNULL(`create_user`,'')create_user,
IFNULL(`update_user`,'')update_user,
IFNULL(`is_delete`,'')is_delete,
IFNULL(`data_level`,'')data_level,
IFNULL(`data_code`,'')data_code,
IFNULL(`protect_obj_name`,'')protect_obj_name,
IFNULL(`route_name`,'') route_name
FROM
toip_biz_node3dvo bn
WHERE
1 = 1
<if test="inputText!=null" >
AND (
bn.display_name LIKE '%${inputText}%'
OR bn.data_code LIKE '%${inputText}%'
)
</if>
<if test="protectObjName!=null">
AND bn.protect_obj_name LIKE '%${protectObjName}%'
</if>
<if test="routeName!=null">
AND bn.route_name LIKE '%${routeName}%'
</if>
<if test="dataLevel!=null" >
AND bn.data_level = '${dataLevel}'
</if>
<if test="orgCode!=null" >
AND bn.org_code LIKE '%${orgCode}%'
</if>
<!-- <if test="nodeState!=null" >
AND bn.node_state = ${nodeState}
</if> -->
<choose>
<when test="nodeState== 0" >
AND bn.node_state = "未纳入巡检计划"
</when>
<when test="nodeState== 1" >
AND bn.node_state = "合格"
</when>
<when test="nodeState== 2" >
AND bn.node_state = "不合格"
</when>
<when test="nodeState== 3" >
AND bn.node_state = "漏检"
</when>
</choose>
<if test="type!=null" >
AND bn.type in
<foreach collection="type.split(',')" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
LIMIT ${start},${length}
</select>
</mapper>
\ No newline at end of file
log4j.rootLogger=DEBUG, stdout, logfile
log4j.logger.io.netty=info
log4j.logger.org.hibernate=info
log4j.logger.com.mchange=info
log4j.logger.org.springframework=info
log4j.logger.com.mangofactory=info
log4j.logger.org.apache=info
log4j.logger.com.zaxxer.hikari.pool=info
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %t %-5p [%c{1}:%L] %m%n
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=logs/YeeSafety3DServer.log
log4j.appender.logfile.MaxFileSize=10240KB
log4j.appender.logfile.MaxBackupIndex=30
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %t %-5p [%c{1}:%L] %m%n
<?xml version="1.0" encoding="UTF-8"?>
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
<id>package</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>bin</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<directory>src/main/resources/db</directory>
<outputDirectory>/db</outputDirectory>
</fileSet>
<fileSet>
<directory>src/main/resources</directory>
<includes>
<include>application.properties</include>
<include>apollo-env.properties</include>
<include>log4j.properties</include>
<include>META-INF/app.properties</include>
</includes>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<scope>runtime</scope>
<!-- <unpack>false</unpack> -->
<excludes>
<!-- <exclude>${project.name}-${project.version}</exclude> -->
<exclude>${groupId}:${artifactId}</exclude>
</excludes>
</dependencySet>
</dependencySets>
</assembly>
\ No newline at end of file
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yeejoin.amos</groupId>
<artifactId>YeeSafety3DRoot</artifactId>
<version>1.1.0</version>
<packaging>pom</packaging>
<name>YeeSafety3DRoot</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>
<modules>
<module>YeeSafety3DStart</module>
<module>YeeSafety3DServer</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<liquibase.version>3.5.3</liquibase.version>
<swagger.version>2.7.0</swagger.version>
<spring-cloud.version>Dalston.SR5</spring-cloud.version>
<YeeSecurity.version>2.0.3</YeeSecurity.version>
<YeeOp.version>2.0.2</YeeOp.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<!-- Swagger2模块 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- 添加fastjson 依赖包. -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>3.7.5</version>
</dependency>
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>0.9.1</version>
</dependency>
<!-- 通用Mapper -->
<dependency>
<groupId>com.github.abel533</groupId>
<artifactId>mapper</artifactId>
<version>3.0.1</version>
</dependency>
<!-- 添加commons-lang依赖包 -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>0.10.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.8.2</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<distributionManagement>
<repository>
<id>analyse-operate-release</id>
<name>analyse-operate Porject Release</name>
<url>http://172.16.1.6:8081/nexus/content/repositories/releases/</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>spring-snapshots</id>
<url>http://172.16.1.6:8081/nexus/content/repositories/spring.io/</url>
</repository>
<repository>
<id>nexus</id>
<name>Team Nexus Repository</name>
<url>http://172.16.1.6:8081/nexus/content/groups/public</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>http://172.16.1.6:8081/nexus/content/repositories/spring.io/</url>
</pluginRepository>
<pluginRepository>
<id>nexus</id>
<name>Team Nexus Repository</name>
<url>http://172.16.1.6:8081/nexus/content/groups/public</url>
</pluginRepository>
</pluginRepositories>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- 打包时跳过单元测试 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests><!-- true跳过 false不跳过 -->
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment