1、样例配置审核,一条配置提交一次服务(为了保证一条配置提交过程完整的事务性);2、表单验证信息完善;3、列表分类性质标签列显示样式调整

This commit is contained in:
zhangwei
2018-05-28 10:10:37 +08:00
parent cd1cb600b9
commit 90405716f8
7 changed files with 136 additions and 104 deletions

View File

@@ -1,11 +1,18 @@
package com.nis.web.controller.configuration.ntc; package com.nis.web.controller.configuration.ntc;
import java.io.File; import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID; import java.util.UUID;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.util.FileCopyUtils; import org.springframework.util.FileCopyUtils;
@@ -13,13 +20,20 @@ import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.nis.domain.Page; import com.nis.domain.Page;
import com.nis.domain.configuration.AppIdCfg; import com.nis.domain.configuration.AppIdCfg;
import com.nis.domain.configuration.AvFileSampleCfg; import com.nis.domain.configuration.AvFileSampleCfg;
import com.nis.domain.configuration.AvSignSampleCfg; import com.nis.domain.configuration.AvSignSampleCfg;
import com.nis.domain.maat.ToMaatResult;
import com.nis.domain.maat.ToMaatResult.ResponseData;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.FileUtils; import com.nis.util.FileUtils;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.web.controller.BaseController; import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
/** /**
* 处理音视频业务 * 处理音视频业务
@@ -124,9 +138,84 @@ public class AvController extends BaseController {
return "redirect:" + adminPath +"/ntc/av/sample/fileSampleList?functionId="+functionId; return "redirect:" + adminPath +"/ntc/av/sample/fileSampleList?functionId="+functionId;
} }
//修改文件样例配置审核状态 //修改文件样例配置审核状态
/**
* 审核配置下发,为了保证配置下发过程事务正确,一条配置提交一次
* @param isAudit
* @param isValid
* @param ids
* @param functionId
* @return
*/
@RequestMapping(value = {"/sample/auditAvFileSample"}) @RequestMapping(value = {"/sample/auditAvFileSample"})
public String auditAvFileSample(Integer isAudit,Integer isValid,String ids,Integer functionId){ public String auditAvFileSample(Integer isAudit,Integer isValid,String ids,Integer functionId){
avCfgService.auditAvFileSample(isAudit,isValid,ids); // avCfgService.auditAvFileSample(isAudit,isValid,ids);
AvFileSampleCfg entity = new AvFileSampleCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = avCfgService.getAvFileSampleById(Long.parseLong(id));
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
String oldSrcUrl = entity.getSrcPath();
String oldSampleUrl = entity.getSamplePath();
if(isAudit==1){
//音视频文件上传接口调用
try {
File srcFile = new File(oldSrcUrl);
Map<String,Object> srcMap = new HashMap();
srcMap.put("filetype", FileUtils.getSuffix(srcFile.getName(), false));
srcMap.put("datatype", "dbSystem");//源文件存入数据中心
srcMap.put("createTime", entity.getCreateTime());
srcMap.put("key",FileUtils.getPrefix(srcFile.getName(), false));
srcMap.put("fileName", srcFile.getName());
srcMap.put("checksum", entity.getSrcMd5());
ToMaatResult result1 = ConfigServiceUtil.postFileCfg(null, srcFile, JSONObject.fromObject(srcMap));
logger.info("音视频源文件上传响应信息:"+result1);
//获取文件上传响应信息(新的文件访问路径)
String srcAccessUrl = null;
if(!StringUtil.isEmpty(result1)){
ResponseData data = result1.getData();
srcAccessUrl=data.getAccessUrl();
entity.setSrcUrl(srcAccessUrl);
// entity.setSrcPath("");
}
File sampleFile = new File(oldSampleUrl);
Map<String,Object> sampleMap = new HashMap();
sampleMap.put("filetype", FileUtils.getSuffix(sampleFile.getName(), false));
sampleMap.put("datatype", "fileSystem");//样例文件存入fastdfs
sampleMap.put("createTime", entity.getCreateTime());
sampleMap.put("key",FileUtils.getPrefix(sampleFile.getName(), false));
sampleMap.put("fileName", sampleFile.getName());
sampleMap.put("checksum", entity.getSampleMd5());
ToMaatResult result2 = ConfigServiceUtil.postFileCfg(null, sampleFile, JSONObject.fromObject(sampleMap));
logger.info("音视频样例文件上传响应信息:"+result2);
//获取文件上传响应信息(新的文件访问路径)
String sampleAccessUrl = null;
if(!StringUtil.isEmpty(result2)){
ResponseData data = result2.getData();
sampleAccessUrl = data.getAccessUrl();
entity.setSampleUrl(sampleAccessUrl);
// entity.setSamplePath("");
}
} catch (Exception e) {
e.printStackTrace();
logger.info("音视频文件样例配置下发失败");
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+e.getMessage());
}
}
avCfgService.auditAvFileSample(entity,isAudit);
//删除本地源文件和样例文件
if(!oldSrcUrl.equals(entity.getSrcUrl())){
FileUtils.deleteFile(oldSrcUrl);
}
if(!oldSampleUrl.equals(entity.getSampleUrl())){
FileUtils.deleteFile(oldSampleUrl);
}
}
return "redirect:" + adminPath +"/ntc/av/sample/fileSampleList?functionId="+functionId; return "redirect:" + adminPath +"/ntc/av/sample/fileSampleList?functionId="+functionId;
} }
//修改标志样例配置状态 //修改标志样例配置状态
@@ -136,9 +225,27 @@ public class AvController extends BaseController {
return "redirect:" + adminPath +"/ntc/av/sample/signSampleList?functionId="+functionId; return "redirect:" + adminPath +"/ntc/av/sample/signSampleList?functionId="+functionId;
} }
//修改标志样例配置审核状态 //修改标志样例配置审核状态
/**
* 审核配置下发,为了保证配置下发过程事务正确,一条配置提交一次
* @param isAudit
* @param isValid
* @param ids
* @param functionId
* @return
*/
@RequestMapping(value = {"/sample/auditAvSignSample"}) @RequestMapping(value = {"/sample/auditAvSignSample"})
public String auditAvSignSample(Integer isAudit,Integer isValid,String ids,Integer functionId){ public String auditAvSignSample(Integer isAudit,Integer isValid,String ids,Integer functionId){
avCfgService.auditAvSignSample(isAudit,isValid,ids); // avCfgService.auditAvSignSample(isAudit,isValid,ids);
AvSignSampleCfg entity = new AvSignSampleCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = avCfgService.getAvSignSampleById(Long.parseLong(id));
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
avCfgService.auditAvSignSample(entity,isAudit);
}
return "redirect:" + adminPath +"/ntc/av/sample/signSampleList?functionId="+functionId; return "redirect:" + adminPath +"/ntc/av/sample/signSampleList?functionId="+functionId;
} }
} }

View File

@@ -141,81 +141,13 @@ public class AvCfgService extends BaseService{
} }
public void auditAvFileSample(Integer isAudit,Integer isValid,String ids){ public void auditAvFileSample(AvFileSampleCfg entity,Integer isAudit){
AvFileSampleCfg entity = new AvFileSampleCfg(); //修改数据库审核状态信息
String[] idArray = ids.split(","); avCfgDao.auditAvFileSample(entity);
List<AvFileSampleCfg> list = new ArrayList(); List<AvFileSampleCfg> list = new ArrayList<AvFileSampleCfg>();
Gson gson=new GsonBuilder().disableHtmlEscaping() list.add(entity);
.excludeFieldsWithoutExposeAnnotation() //一条配置提交一次综合服务
.create(); if(isAudit==1){
for(String id :idArray){
entity = getAvFileSampleById(Long.parseLong(id));
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
String oldSrcUrl = entity.getSrcPath();
String oldSampleUrl = entity.getSamplePath();
if(isAudit==1){
//音视频文件上传接口调用
try {
File srcFile = new File(oldSrcUrl);
Map<String,Object> srcMap = new HashMap();
srcMap.put("filetype", FileUtils.getSuffix(srcFile.getName(), false));
srcMap.put("datatype", "dbSystem");//源文件存入数据中心
srcMap.put("createTime", entity.getCreateTime());
srcMap.put("key",FileUtils.getPrefix(srcFile.getName(), false));
srcMap.put("fileName", srcFile.getName());
srcMap.put("checksum", entity.getSrcMd5());
ToMaatResult result1 = ConfigServiceUtil.postFileCfg(null, srcFile, JSONObject.fromObject(srcMap));
logger.info("音视频源文件上传响应信息:"+result1);
//获取文件上传响应信息(新的文件访问路径)
String srcAccessUrl = null;
if(!StringUtil.isEmpty(result1)){
ResponseData data = result1.getData();
srcAccessUrl=data.getAccessUrl();
entity.setSrcUrl(srcAccessUrl);
// entity.setSrcPath("");
}
File sampleFile = new File(oldSampleUrl);
Map<String,Object> sampleMap = new HashMap();
sampleMap.put("filetype", FileUtils.getSuffix(sampleFile.getName(), false));
sampleMap.put("datatype", "fileSystem");//样例文件存入fastdfs
sampleMap.put("createTime", entity.getCreateTime());
sampleMap.put("key",FileUtils.getPrefix(sampleFile.getName(), false));
sampleMap.put("fileName", sampleFile.getName());
sampleMap.put("checksum", entity.getSampleMd5());
ToMaatResult result2 = ConfigServiceUtil.postFileCfg(null, sampleFile, JSONObject.fromObject(sampleMap));
logger.info("音视频样例文件上传响应信息:"+result2);
//获取文件上传响应信息(新的文件访问路径)
String sampleAccessUrl = null;
if(!StringUtil.isEmpty(result2)){
ResponseData data = result2.getData();
sampleAccessUrl = data.getAccessUrl();
entity.setSampleUrl(sampleAccessUrl);
// entity.setSamplePath("");
}
} catch (Exception e) {
e.printStackTrace();
logger.info("音视频文件样例配置下发失败");
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+e.getMessage());
}
}
avCfgDao.auditAvFileSample(entity);
//删除本地源文件和样例文件
if(!oldSrcUrl.equals(entity.getSrcUrl())){
FileUtils.deleteFile(oldSrcUrl);
}
if(!oldSampleUrl.equals(entity.getSampleUrl())){
FileUtils.deleteFile(oldSampleUrl);
}
list.add(entity);
}
if(isAudit==1){
//调用服务接口下发配置数据 //调用服务接口下发配置数据
String json=gsonToJson(list); String json=gsonToJson(list);
logger.info("音视频文件样例下发配置参数:"+json); logger.info("音视频文件样例下发配置参数:"+json);
@@ -255,19 +187,10 @@ public class AvCfgService extends BaseService{
avCfgDao.updateAvSignSampleValid(entity); avCfgDao.updateAvSignSampleValid(entity);
} }
} }
public void auditAvSignSample(Integer isAudit,Integer isValid,String ids){ public void auditAvSignSample(AvSignSampleCfg entity,Integer isAudit){
AvSignSampleCfg entity = new AvSignSampleCfg(); avCfgDao.auditAvSignSample(entity);
String[] idArray = ids.split(","); List<AvSignSampleCfg> list = new ArrayList<AvSignSampleCfg>();
List<AvSignSampleCfg> list = new ArrayList(); list.add(entity);
for(String id :idArray){
entity = getAvSignSampleById(Long.parseLong(id));
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
avCfgDao.auditAvSignSample(entity);
list.add(entity);
}
if(isAudit==1){ if(isAudit==1){
//调用服务接口下发配置数据 //调用服务接口下发配置数据
String json=gsonToJson(list); String json=gsonToJson(list);

View File

@@ -130,7 +130,7 @@ $(function(){
<div class="form-group "> <div class="form-group ">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="harm_level"/></label> <label class="control-label col-md-3"><font color="red">*</font><spring:message code="harm_level"/></label>
<div class="col-md-6"> <div class="col-md-6">
<input class="form-control required" type="text" name="level" value="${_cfg.level }"> <input class="form-control required" range="[0,100]" type="text" name="level" value="${_cfg.level }">
</div> </div>
<div for="level"></div> <div for="level"></div>
</div> </div>
@@ -156,7 +156,7 @@ $(function(){
</div> </div>
<input id="srcUrl" name="srcUrl" type="hidden" value="${_cfg.srcUrl }"/> <input id="srcUrl" name="srcUrl" type="hidden" value="${_cfg.srcUrl }"/>
</div> </div>
<div for="srcFile"></div> <div for="srcFileInfo"></div>
</div> </div>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
@@ -179,7 +179,7 @@ $(function(){
<span id="sampleFileInfo">${_cfg.sampleUrl }</span> --%> <span id="sampleFileInfo">${_cfg.sampleUrl }</span> --%>
<input id="sampleUrl" name="sampleUrl" type="hidden" value="${_cfg.sampleUrl }" /> <input id="sampleUrl" name="sampleUrl" type="hidden" value="${_cfg.sampleUrl }" />
</div> </div>
<div for="sampleFile"></div> <div for="sampleFileInfo"></div>
</div> </div>
</div> </div>

View File

@@ -334,7 +334,7 @@
</c:if> </c:if>
</c:forEach> </c:forEach>
</c:forEach> </c:forEach>
<a href="${classify}" target="_blank" data-original-title="${classify}" <a href="javascript:;" data-original-title="${classify}"
class="tooltips" data-flag="false" data-html="true" data-placement="top"> class="tooltips" data-flag="false" data-html="true" data-placement="top">
${fns:abbr(classify,20)} ${fns:abbr(classify,20)}
</a> </a>
@@ -353,7 +353,7 @@
</c:if> </c:if>
</c:forEach> </c:forEach>
</c:forEach> </c:forEach>
<a href="${attribute}" target="_blank" data-original-title="${attribute}" <a href="javascript:;" data-original-title="${attribute}"
class="tooltips" data-flag="false" data-html="true" data-placement="top"> class="tooltips" data-flag="false" data-html="true" data-placement="top">
${fns:abbr(attribute,20)} ${fns:abbr(attribute,20)}
</a> </a>
@@ -373,7 +373,7 @@
</c:if> </c:if>
</c:forEach> </c:forEach>
</c:forEach> </c:forEach>
<a href="${lableInfo}" target="_blank" data-original-title="${lableInfo}" <a href="javascript:;" data-original-title="${lableInfo}"
class="tooltips" data-flag="false" data-html="true" data-placement="top"> class="tooltips" data-flag="false" data-html="true" data-placement="top">
${fns:abbr(lableInfo,20)} ${fns:abbr(lableInfo,20)}
</a> </a>

View File

@@ -105,11 +105,11 @@ $(function(){
<div class="form-group "> <div class="form-group ">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="harm_level"/></label> <label class="control-label col-md-3"><font color="red">*</font><spring:message code="harm_level"/></label>
<div class="col-md-6"> <div class="col-md-6">
<input class="form-control required" type="text" name="level" value="${_cfg.level }"> <input class="form-control required digest" range="[0,100]" type="text" name="level" value="${_cfg.level }">
</div> </div>
<div for="level"></div>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
@@ -118,6 +118,7 @@ $(function(){
<div class="col-md-6"> <div class="col-md-6">
<input class="form-control required" type="text" name="description" value="${_cfg.description }"> <input class="form-control required" type="text" name="description" value="${_cfg.description }">
</div> </div>
<div for="description"></div>
</div> </div>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
@@ -134,6 +135,7 @@ $(function(){
</label> </label>
</c:forEach> </c:forEach>
</div> </div>
<div for="action"></div>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -331,7 +331,7 @@
</c:if> </c:if>
</c:forEach> </c:forEach>
</c:forEach> </c:forEach>
<a href="${classify}" target="_blank" data-original-title="${classify}" <a href="javascript:;" data-original-title="${classify}"
class="tooltips" data-flag="false" data-html="true" data-placement="top"> class="tooltips" data-flag="false" data-html="true" data-placement="top">
${fns:abbr(classify,20)} ${fns:abbr(classify,20)}
</a> </a>
@@ -350,7 +350,7 @@
</c:if> </c:if>
</c:forEach> </c:forEach>
</c:forEach> </c:forEach>
<a href="${attribute}" target="_blank" data-original-title="${attribute}" <a href="javascript:;" data-original-title="${attribute}"
class="tooltips" data-flag="false" data-html="true" data-placement="top"> class="tooltips" data-flag="false" data-html="true" data-placement="top">
${fns:abbr(attribute,20)} ${fns:abbr(attribute,20)}
</a> </a>
@@ -370,7 +370,7 @@
</c:if> </c:if>
</c:forEach> </c:forEach>
</c:forEach> </c:forEach>
<a href="${lableInfo}" target="_blank" data-original-title="${lableInfo}" <a href="javascript:;" data-original-title="${lableInfo}"
class="tooltips" data-flag="false" data-html="true" data-placement="top"> class="tooltips" data-flag="false" data-html="true" data-placement="top">
${fns:abbr(lableInfo,20)} ${fns:abbr(lableInfo,20)}
</a> </a>

View File

@@ -381,7 +381,7 @@
</c:if> </c:if>
</c:forEach> </c:forEach>
</c:forEach> </c:forEach>
<a href="${classify}" target="_blank" data-original-title="${classify}" <a href="javascript:;" data-original-title="${classify}"
class="tooltips" data-flag="false" data-html="true" data-placement="top"> class="tooltips" data-flag="false" data-html="true" data-placement="top">
${fns:abbr(classify,20)} ${fns:abbr(classify,20)}
</a> </a>
@@ -400,7 +400,7 @@
</c:if> </c:if>
</c:forEach> </c:forEach>
</c:forEach> </c:forEach>
<a href="${attribute}" target="_blank" data-original-title="${attribute}" <a href="javascript:;" data-original-title="${attribute}"
class="tooltips" data-flag="false" data-html="true" data-placement="top"> class="tooltips" data-flag="false" data-html="true" data-placement="top">
${fns:abbr(attribute,20)} ${fns:abbr(attribute,20)}
</a> </a>
@@ -420,7 +420,7 @@
</c:if> </c:if>
</c:forEach> </c:forEach>
</c:forEach> </c:forEach>
<a href="${lableInfo}" target="_blank" data-original-title="${lableInfo}" <a href="javascript:;" data-original-title="${lableInfo}"
class="tooltips" data-flag="false" data-html="true" data-placement="top"> class="tooltips" data-flag="false" data-html="true" data-placement="top">
${fns:abbr(lableInfo,20)} ${fns:abbr(lableInfo,20)}
</a> </a>