|
@ -2,7 +2,14 @@ package com.yihu.jw.basic.resource.controller;
|
|
|
|
|
|
import com.yihu.ehr.constants.ApiVersion;
|
|
|
import com.yihu.ehr.constants.ServiceApi;
|
|
|
import com.yihu.jw.basic.resource.model.RsCategoryTypeTreeModel;
|
|
|
import com.yihu.jw.basic.resource.service.RsResourceCategoryService;
|
|
|
import com.yihu.jw.entity.ehr.resource.RsResourceCategory;
|
|
|
import com.yihu.jw.restmodel.ehr.resource.MRsCategory;
|
|
|
import com.yihu.jw.restmodel.ehr.resource.MRsReportCategory;
|
|
|
import com.yihu.jw.restmodel.web.Envelop;
|
|
|
import com.yihu.jw.restmodel.web.ListEnvelop;
|
|
|
import com.yihu.jw.restmodel.web.ObjEnvelop;
|
|
|
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
|
|
|
import com.yihu.jw.entity.ehr.resource.RsReportCategory;
|
|
|
import com.yihu.jw.basic.resource.service.RsReportCategoryService;
|
|
@ -30,6 +37,8 @@ public class RsReportCategoryEndPoint extends EnvelopRestEndpoint {
|
|
|
|
|
|
@Autowired
|
|
|
private RsReportCategoryService rsReportCategoryService;
|
|
|
@Autowired
|
|
|
private RsResourceCategoryService rsCategoryService;
|
|
|
|
|
|
@ApiOperation("根据ID获取资源报表分类")
|
|
|
@RequestMapping(value = ServiceApi.Resources.RsReportCategory, method = RequestMethod.GET)
|
|
@ -88,18 +97,48 @@ public class RsReportCategoryEndPoint extends EnvelopRestEndpoint {
|
|
|
|
|
|
@ApiOperation("新增资源报表分类")
|
|
|
@RequestMapping(value = ServiceApi.Resources.RsReportCategorySave, method = RequestMethod.POST)
|
|
|
public MRsReportCategory add(
|
|
|
public ObjEnvelop add(
|
|
|
@ApiParam(name = "rsReportCategory", value = "资源报表分类JSON", required = true)
|
|
|
@RequestBody String rsReportCategory) throws Exception {
|
|
|
RsReportCategory newRsReportCategory = toEntity(rsReportCategory, RsReportCategory.class);
|
|
|
if (null == newRsReportCategory.getPid()) {
|
|
|
newRsReportCategory.setPid(0);
|
|
|
}
|
|
|
if (null == newRsReportCategory.getSortNo()) {
|
|
|
newRsReportCategory.setSortNo(99);
|
|
|
@RequestBody String rsReportCategory) {
|
|
|
try {
|
|
|
RsReportCategory newRsReportCategory = toEntity(rsReportCategory, RsReportCategory.class);
|
|
|
if (null == newRsReportCategory.getPid()) {
|
|
|
newRsReportCategory.setPid(0);
|
|
|
}
|
|
|
if (null == newRsReportCategory.getSortNo()) {
|
|
|
newRsReportCategory.setSortNo(99);
|
|
|
}
|
|
|
|
|
|
if(newRsReportCategory.getId()==null){
|
|
|
//新增判断名称和code 是否唯一
|
|
|
if(!rsReportCategoryService.isUniqueName(0, newRsReportCategory.getName())){
|
|
|
return ObjEnvelop.getError("名称已存在",-1);
|
|
|
}
|
|
|
if(!rsReportCategoryService.isUniqueCode(0, newRsReportCategory.getCode())){
|
|
|
return ObjEnvelop.getError("编码已存在",-1);
|
|
|
}
|
|
|
}else{
|
|
|
//修改 如果有修改name和code要判断是否唯一
|
|
|
RsReportCategory oldRsReportCategory = rsReportCategoryService.getById(newRsReportCategory.getId());
|
|
|
if(!oldRsReportCategory.getName().equals(newRsReportCategory.getName())){
|
|
|
if(!rsReportCategoryService.isUniqueName(newRsReportCategory.getId(), newRsReportCategory.getName())){
|
|
|
return ObjEnvelop.getError("名称已存在",-1);
|
|
|
}
|
|
|
}
|
|
|
if(!oldRsReportCategory.getCode().equals(newRsReportCategory.getCode())){
|
|
|
if(!rsReportCategoryService.isUniqueCode(newRsReportCategory.getId(), newRsReportCategory.getCode())){
|
|
|
return ObjEnvelop.getError("编码已存在",-1);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
newRsReportCategory = rsReportCategoryService.save(newRsReportCategory);
|
|
|
MRsReportCategory mRsReportCategory = convertToModel(newRsReportCategory, MRsReportCategory.class);
|
|
|
return ObjEnvelop.getSuccess("操作成功",mRsReportCategory);
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
newRsReportCategory = rsReportCategoryService.save(newRsReportCategory);
|
|
|
return convertToModel(newRsReportCategory, MRsReportCategory.class);
|
|
|
return ObjEnvelop.getError("操作失败",-1);
|
|
|
}
|
|
|
|
|
|
@ApiOperation("更新资源报表分类")
|
|
@ -175,4 +214,108 @@ public class RsReportCategoryEndPoint extends EnvelopRestEndpoint {
|
|
|
List<Integer> categoryIds = rsReportCategoryService.getCategoryIds(code);
|
|
|
return categoryIds;
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value = ServiceApi.Resources.CategoryTree, method = RequestMethod.GET)
|
|
|
@ApiOperation(value = "获取所有资源类别转成的RsCategoryTypeTreeModel列表,初始页面显示")
|
|
|
public ListEnvelop getRsCategoryTreeModels(
|
|
|
@ApiParam(name = "userResource", value = "授权资源")
|
|
|
@RequestParam(value = "userResource") String userResource,
|
|
|
@ApiParam(name = "name", value = "资源类别的名称")
|
|
|
@RequestParam(value = "name",required = false) String name) throws Exception {
|
|
|
ListEnvelop envelop = new ListEnvelop();
|
|
|
//获取到的顶级cda类别集合
|
|
|
List<RsResourceCategory> categoryList;
|
|
|
if(userResource.equals("*")) {
|
|
|
categoryList = rsCategoryService.getRsCategoryByPid("");
|
|
|
}else {
|
|
|
categoryList = rsCategoryService.findByCodeAndPid("derived", "");
|
|
|
}
|
|
|
//顶级类别中符合条件的类别集合
|
|
|
List<RsResourceCategory> mRsCategoriesSome = new ArrayList<>();
|
|
|
//顶级类别中不符合条件的类别集合
|
|
|
List<RsResourceCategory> mRsCategoriesOthers = new ArrayList<>();
|
|
|
if (categoryList == null || categoryList.size() == 0){
|
|
|
envelop.setStatus(-1);
|
|
|
envelop.setMessage("没有匹配条件的资源类别!");
|
|
|
return envelop;
|
|
|
}
|
|
|
List<RsCategoryTypeTreeModel> treeList = new ArrayList<>();
|
|
|
if(StringUtils.isEmpty(name)){
|
|
|
treeList = getRsCategoryTreeModelChild(categoryList);
|
|
|
envelop.setDetailModelList(treeList);
|
|
|
return envelop;
|
|
|
}
|
|
|
for(RsResourceCategory mRsCategory : categoryList){
|
|
|
if(mRsCategory.getName().contains(name)){
|
|
|
mRsCategoriesSome.add(mRsCategory);
|
|
|
continue;
|
|
|
}
|
|
|
mRsCategoriesOthers.add(mRsCategory);
|
|
|
}
|
|
|
if (mRsCategoriesSome.size() != 0){
|
|
|
treeList.addAll(getRsCategoryTreeModelChild(mRsCategoriesSome));
|
|
|
}
|
|
|
treeList .addAll(getRsCategoryTreeModelByName(mRsCategoriesOthers, name));
|
|
|
envelop.setDetailModelList(treeList);
|
|
|
return envelop;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
*
|
|
|
* 根据父级信息获取全部的子级信息(树形model)
|
|
|
* @param info 父级信息
|
|
|
* @return 全部子级信息
|
|
|
*/
|
|
|
private List<RsCategoryTypeTreeModel> getRsCategoryTreeModelChild(List<RsResourceCategory> info) {
|
|
|
List<RsCategoryTypeTreeModel> treeInfo = new ArrayList<>();
|
|
|
for (int i = 0; i < info.size(); i++) {
|
|
|
RsResourceCategory typeInfo = info.get(i);
|
|
|
RsCategoryTypeTreeModel tree = convertToModel(typeInfo, RsCategoryTypeTreeModel.class);
|
|
|
List<RsResourceCategory> categoryListChild = rsCategoryService.getRsCategoryByPid(typeInfo.getId());
|
|
|
List<RsCategoryTypeTreeModel> listChildTree = getRsCategoryTreeModelChild(categoryListChild);
|
|
|
tree.setChildren(listChildTree);
|
|
|
treeInfo.add(tree);
|
|
|
}
|
|
|
return treeInfo;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 递归不满足的父级类别集合的子集中满足条件TreeModel集合的方法
|
|
|
* @param mRsCategories 不符合的父级类别的集合
|
|
|
* @param name
|
|
|
* @return
|
|
|
*/
|
|
|
private List<RsCategoryTypeTreeModel> getRsCategoryTreeModelByName(List<RsResourceCategory> mRsCategories, String name) throws ParseException {
|
|
|
//结构:treeList 包含treeModel,treeModel包含listOfParent
|
|
|
List<RsCategoryTypeTreeModel> treeList = new ArrayList<>();
|
|
|
for(RsResourceCategory mRsCategory:mRsCategories){
|
|
|
List<RsCategoryTypeTreeModel> childList = new ArrayList<>();
|
|
|
RsCategoryTypeTreeModel treeModel = convertToModel(mRsCategory,RsCategoryTypeTreeModel.class);
|
|
|
String pid = mRsCategory.getId();
|
|
|
//获取所有下一级cda类别
|
|
|
List<RsResourceCategory> listAll = rsCategoryService.getRsCategoryByPid(pid);
|
|
|
if(listAll.size() == 0){
|
|
|
continue;
|
|
|
}
|
|
|
//获取所有下一级符合要求的资源类别
|
|
|
String filters ="pid="+pid+";name?"+name;
|
|
|
|
|
|
//modify by cws
|
|
|
List<RsResourceCategory> listSome = rsCategoryService.search(filters);
|
|
|
//List<MRsCategory> listSome = (List<MRsCategory>)responseEntity.getBody();
|
|
|
if(listSome.size()!=0){
|
|
|
childList.addAll(getRsCategoryTreeModelChild(listSome));
|
|
|
}
|
|
|
//取剩下不符合要求的进行递归
|
|
|
listAll.removeAll(listSome);
|
|
|
if(listAll.size() != 0){
|
|
|
childList.addAll(getRsCategoryTreeModelByName(listAll, name));
|
|
|
}
|
|
|
if(childList.size() != 0){
|
|
|
treeModel.setChildren(childList);
|
|
|
treeList.add(treeModel);
|
|
|
}
|
|
|
}
|
|
|
return treeList;
|
|
|
}
|
|
|
}
|