OrgSaasController.java 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. package com.yihu.ehr.saas.controller;
  2. import com.yihu.ehr.agModel.orgSaas.AreaSaasModel;
  3. import com.yihu.ehr.agModel.orgSaas.OrgSaasModel;
  4. import com.yihu.ehr.constants.ApiVersion;
  5. import com.yihu.ehr.constants.ServiceApi;
  6. import com.yihu.ehr.controller.BaseController;
  7. import com.yihu.ehr.geography.service.AddressClient;
  8. import com.yihu.ehr.model.common.ListResult;
  9. import com.yihu.ehr.model.geography.MGeographyDict;
  10. import com.yihu.ehr.organization.service.OrgSaasClient;
  11. import com.yihu.ehr.organization.service.OrganizationClient;
  12. import com.yihu.ehr.redis.client.RedisUpdateClient;
  13. import com.yihu.ehr.util.rest.Envelop;
  14. import io.swagger.annotations.Api;
  15. import io.swagger.annotations.ApiOperation;
  16. import io.swagger.annotations.ApiParam;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.cloud.netflix.feign.EnableFeignClients;
  19. import org.springframework.web.bind.annotation.*;
  20. import java.net.URLDecoder;
  21. import java.util.*;
  22. /**
  23. * Created by zdm on 2017/5/26.
  24. */
  25. @EnableFeignClients
  26. @RequestMapping(ApiVersion.Version1_0+"/admin")
  27. @RestController
  28. @Api(value = "OrgSaas", description = "机构Saas授权", tags = {"基础信息"})
  29. public class OrgSaasController extends BaseController{
  30. @Autowired
  31. private OrgSaasClient orgSaasClient;
  32. @Autowired
  33. private OrganizationClient orgClient;
  34. @Autowired
  35. private AddressClient addressClient;
  36. @Autowired
  37. private RedisUpdateClient redisUpdateClient;
  38. @RequestMapping(value = "/OrgSaasByOrg", method = RequestMethod.GET)
  39. @ApiOperation(value = "根据机构获取机构相关授权")
  40. public Envelop getOrgSaasByorgCode(
  41. @ApiParam(name = "orgCode", value = "机构", defaultValue = "")
  42. @RequestParam(value = "orgCode", required = false) String orgCode,
  43. @ApiParam(name = "type", value = "类别", defaultValue = "")
  44. @RequestParam(value = "type", required = false) String type,
  45. @ApiParam(name = "saasName", value = "名称", defaultValue = "")
  46. @RequestParam(value = "saasName", required = false) String saasName)throws Exception {
  47. Envelop envelop = new Envelop();
  48. //根据机构id在asaas表中获取数据
  49. ListResult listResult =orgSaasClient.getOrgSaasByorgCode(orgCode,type);
  50. List<Map<String,Object>> saasList = listResult.getDetailModelList();
  51. Map<String,Object> orgSaasMap=new TreeMap();
  52. if(null!=saasList&&saasList.size()>0){
  53. for(int i=0;i<saasList.size();i++){
  54. Object obj=(Object)saasList.get(i);
  55. if(null!=((ArrayList) obj).get(3)){
  56. orgSaasMap.put(((ArrayList) obj).get(3).toString(),obj);
  57. }
  58. }
  59. }
  60. //授权类型 1区域 2机构
  61. OrgSaasModel osm=null;
  62. List<OrgSaasModel> OrgSaasModelList=new ArrayList<>();
  63. List<OrgSaasModel> OrgSaasModelRightList=new ArrayList<>();
  64. if(!"".equals(type)&&type.equals("2")){
  65. List<Map<String,Object>> orgList =new ArrayList<>();
  66. //在机构表中获取所有机构数据
  67. if(null!=saasName&&!"".equals(saasName)){
  68. orgList =orgClient.getAllSaasOrgs(saasName);
  69. }else{
  70. orgList =orgClient.getAllOrgs();
  71. }
  72. if(null!=orgList&&orgList.size()>0){
  73. for(int i=0;i<orgList.size();i++){
  74. Map<String,Object> obj=orgList.get(i);
  75. osm=new OrgSaasModel();
  76. if(null!=obj.get("id")){
  77. osm.setId(obj.get("id").toString());
  78. }
  79. osm.setOrgCode(orgCode);
  80. osm.setType(type);
  81. if(null!=obj.get("levelId")){
  82. osm.setLevel(obj.get("levelId").toString());
  83. }
  84. if(null!=obj.get("orgCode")){
  85. osm.setSaasCode(obj.get("orgCode").toString());
  86. }
  87. if(null!=obj.get("fullName")){
  88. osm.setSaasName(obj.get("fullName").toString());
  89. }
  90. if(null!=obj.get("parentHosId")){
  91. osm.setParent_hos_id(obj.get("parentHosId").toString());
  92. }
  93. if(null!=obj.get("orgCode")&&null!=orgSaasMap.get(obj.get("orgCode").toString())){
  94. osm.setIschecked(true);
  95. OrgSaasModelRightList.add(osm);
  96. }else{
  97. osm.setIschecked(false);
  98. }
  99. OrgSaasModelList.add(osm);
  100. }
  101. }
  102. if(OrgSaasModelList.size()>0){
  103. envelop.setDetailModelList(OrgSaasModelList);
  104. envelop.setObj(OrgSaasModelRightList);
  105. envelop.setSuccessFlg(true);
  106. }else {
  107. }
  108. }else{
  109. //查找所有区域
  110. List<MGeographyDict> mGeographyDictList =new ArrayList<MGeographyDict>();
  111. List<AreaSaasModel> AreaSaasModelList=new ArrayList<>();
  112. List<AreaSaasModel> AreaSaasModelRightList=new ArrayList<>();
  113. AreaSaasModel asm=null;
  114. List<MGeographyDict> newMGeographyDictList =new ArrayList<>();
  115. if(null!=saasName&&!"".equals(saasName)){
  116. newMGeographyDictList=addressClient.getOrgSaasAreaByname(saasName);
  117. mGeographyDictList.addAll(newMGeographyDictList);
  118. }else{
  119. for(int i=1;i<4;i++ ){
  120. newMGeographyDictList = addressClient.getAddressByLevel(i);
  121. mGeographyDictList.addAll(newMGeographyDictList);
  122. }
  123. }
  124. if(null!=mGeographyDictList&&mGeographyDictList.size()>0){
  125. for(int i=0;i<mGeographyDictList.size();i++){
  126. MGeographyDict obj=mGeographyDictList.get(i);
  127. asm=new AreaSaasModel();
  128. asm.setId(String.valueOf(obj.getId()));
  129. asm.setOrgCode(orgCode);
  130. asm.setType(type);
  131. asm.setSaasCode(String.valueOf(obj.getId()));
  132. asm.setSaasName(obj.getName());
  133. asm.setParent_hos_id(String.valueOf(obj.getPid()));
  134. asm.setLevel(obj.getLevel());
  135. if(null!=orgSaasMap.get(String.valueOf(obj.getId()))){
  136. asm.setIschecked(true);
  137. AreaSaasModelRightList.add(asm);
  138. }else{
  139. asm.setIschecked(false);
  140. }
  141. AreaSaasModelList.add(asm);
  142. }
  143. }
  144. if(AreaSaasModelList.size()>0){
  145. envelop.setDetailModelList(AreaSaasModelList);
  146. envelop.setObj(AreaSaasModelRightList);
  147. envelop.setSuccessFlg(true);
  148. }else {
  149. }
  150. }
  151. return envelop;
  152. }
  153. /**
  154. * 机构授权检查并保存
  155. * @return
  156. */
  157. @RequestMapping(value = "/orgSaasSave", method = RequestMethod.POST)
  158. @ApiOperation(value = "机构授权检查,如果被授权的机构或者区域在指定机构总不存在,这新增这条记录,否则返回地址id")
  159. public Envelop saveOrgSaas(
  160. @ApiParam(name = "orgCode", value = "机构", defaultValue = "")
  161. @RequestParam(value = "orgCode", required = false) String orgCode,
  162. @ApiParam(name = "type", value = "类别", defaultValue = "")
  163. @RequestParam(value = "type", required = false) String type,
  164. @ApiParam(name = "jsonData", value = "json数据", defaultValue = "")
  165. @RequestBody String jsonData) throws Exception{
  166. Envelop envelop = new Envelop();
  167. OrgSaasModel orgSaasModel = new OrgSaasModel();
  168. jsonData=URLDecoder.decode(jsonData);
  169. String[] newJsonData=jsonData.split("&");
  170. boolean succe = orgSaasClient.saveOrgSaas(orgCode,type,newJsonData[0]);
  171. if(succe){
  172. envelop.setSuccessFlg(true);
  173. //更新相关缓存数据(原则上如果更新失败不能影响实际更新结果)
  174. try {
  175. if (type.equals("1")) {
  176. redisUpdateClient.updateOrgSaasArea(orgCode);
  177. } else {
  178. redisUpdateClient.updateOrgSaasOrg(orgCode);
  179. }
  180. }catch (Exception e) {
  181. e.printStackTrace();
  182. }
  183. //orgSaasModel.setId(id);
  184. }else{
  185. envelop.setSuccessFlg(false);
  186. envelop.setErrorMsg("机构授权新增失败");
  187. }
  188. return envelop;
  189. }
  190. /**
  191. * 机构授权检查并保存
  192. * @return
  193. */
  194. @RequestMapping(value=ServiceApi.Org.getUserOrgSaasByUserOrgCode,method=RequestMethod.GET)
  195. @ApiOperation(value="根据用户的机构id,获取Saas化的机构或者区域id")
  196. public Envelop getUserOrgSaasByUserOrgCode(
  197. @ApiParam(name = "orgCodeStr", value = "用户所在机构")
  198. @RequestParam(value = "orgCodeStr", required = false) String orgCodeStr){
  199. Envelop envelop = new Envelop();
  200. List<String> orgCodeList = Arrays.asList(orgCodeStr.split(","));;
  201. //授权类型 1区域 2机构
  202. List<String> areaResult =orgSaasClient.getUserOrgSaasByUserOrgCode(orgCodeList,"1");
  203. List<String> orgResult =orgSaasClient.getUserOrgSaasByUserOrgCode(orgCodeList,"2");
  204. envelop.setSuccessFlg(true);
  205. envelop.setObj(areaResult);
  206. envelop.setDetailModelList(orgResult);
  207. return envelop;
  208. }
  209. }