ManufacturerInfoController.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. package com.dragoninfo.dcuc.authweb.restcontroller.app;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.dragoninfo.dcuc.app.entity.ApplyInfo;
  4. import com.dragoninfo.dcuc.app.entity.ManufacturerInfo;
  5. import com.dragoninfo.dcuc.app.facade.IApplyInfoFacade;
  6. import com.dragoninfo.dcuc.app.facade.IManufacturerInfoFacade;
  7. import com.dragoninfo.dcuc.authweb.business.MtAuthBusiness;
  8. import com.dragoninfo.dcuc.authweb.common.SysConstants;
  9. import com.dragoninfo.dcuc.authweb.restcontroller.app.vo.ManufacturerVo;
  10. import com.dragoninfo.dcuc.org.facade.IOrgInfoFacade;
  11. import com.dragoninfo.dcuc.org.vo.OrgTreeNode;
  12. import com.dragoninfo.dcuc.user.user.entity.UserInfo;
  13. import com.dragoninfo.dcuc.user.user.enumresources.UserTypeEnum;
  14. import com.dragoninfo.dcuc.user.user.facade.IUserInfoFacade;
  15. import com.dragoninfo.duceap.commons.util.server.OrgInfoUtil;
  16. import com.dragoninfo.duceap.core.enums.ResultEnum;
  17. import com.dragoninfo.duceap.core.response.Result;
  18. import com.dragonsoft.duceap.base.entity.metadata.CodeRecord;
  19. import com.dragonsoft.duceap.base.entity.search.SearchDTO;
  20. import com.dragonsoft.duceap.base.entity.security.BaseSecurityUser;
  21. import com.dragonsoft.duceap.core.context.ContextUtils;
  22. import com.dragonsoft.duceap.core.search.Searchable;
  23. import com.dragonsoft.duceap.web.controller.BaseController;
  24. import io.swagger.annotations.Api;
  25. import io.swagger.annotations.ApiImplicitParam;
  26. import io.swagger.annotations.ApiImplicitParams;
  27. import io.swagger.annotations.ApiOperation;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.data.domain.Page;
  30. import org.springframework.web.bind.annotation.*;
  31. import java.util.*;
  32. /**
  33. * @author yica
  34. * @date 2018/8/8
  35. */
  36. @Api(tags = {"厂商管理接口"})
  37. @RestController
  38. @RequestMapping(value = "/appsvr/v2")
  39. public class ManufacturerInfoController extends BaseController<ManufacturerInfo, String> {
  40. @Autowired
  41. private IManufacturerInfoFacade manufacturerInfoFacade;
  42. @Autowired
  43. private IApplyInfoFacade applyInfoFacade;
  44. @Autowired
  45. private MtAuthBusiness mtAuthBusiness;
  46. @Autowired
  47. private IOrgInfoFacade orgInfoFacade;
  48. @Autowired
  49. private IUserInfoFacade userInfoFacade;
  50. @ApiOperation(value = "厂商查询列表")
  51. @ApiImplicitParam(name = "searchable", value = "查询条件")
  52. @PostMapping(value = "manufacturers")
  53. public Result<List<ManufacturerInfo>> list(SearchDTO searchDTO) {
  54. Searchable searchable = Searchable.toSearchable(searchDTO);
  55. Page<ManufacturerInfo> page = manufacturerInfoFacade.manufacturerInfoPage(searchable.toSearchDTO());
  56. return Result.success(page.getTotalElements(), page.getContent());
  57. }
  58. @ApiOperation(value = "获取厂商")
  59. @ApiImplicitParams({@ApiImplicitParam(paramType = "path", name = "id", value = "厂商ID", required = true
  60. , example = "40288a8b699fc2500169a33b20540000")})
  61. @GetMapping(value = "manufacturer/{id}")
  62. public Result<ManufacturerVo> detail(@PathVariable("id") String id) {
  63. ManufacturerVo manufacturerVo = new ManufacturerVo();
  64. ManufacturerInfo manufacturerInfo = manufacturerInfoFacade.manufacturerInfoDetail(id);
  65. BeanUtil.copyProperties(manufacturerInfo, manufacturerVo);
  66. return Result.success(manufacturerVo);
  67. }
  68. @ApiOperation(value = "修改厂商")
  69. @ApiImplicitParam(name = "manufacturerVo", value = "厂商vo")
  70. @PutMapping(value = "/manufacturer/{id}")
  71. public Result<Object> update(@RequestBody ManufacturerVo manufacturerVo) {
  72. try {
  73. String id = manufacturerVo.getId();
  74. String manufacturerName = manufacturerVo.getManufacturerName();
  75. String code = manufacturerVo.getCode();
  76. ManufacturerInfo old = manufacturerInfoFacade.manufacturerInfoDetail(id);
  77. String oldManufacturerName = old.getManufacturerName();
  78. String oldCode = old.getCode();
  79. //厂商名称是否被修改
  80. if (!oldManufacturerName.equals(manufacturerName)) {
  81. List<ApplyInfo> appList = applyInfoFacade.getAppListByManufacturerId(id);
  82. if (null != appList && (!appList.isEmpty())) {
  83. return Result.fail(ResultEnum.SERVICE_FAIL.getValue(), "厂商已被引用,名称不可修改!");
  84. }
  85. if (isManufacturerName(manufacturerVo.getManufacturerName())) {
  86. return Result.fail(ResultEnum.SERVICE_FAIL.getValue(), "厂商名称已被创建");
  87. }
  88. }
  89. if (!code.equals(oldCode) && isCodeExist(code)) {
  90. return Result.fail(ResultEnum.SERVICE_FAIL.getValue(), "组织机构代码已存在");
  91. }
  92. BeanUtil.copyProperties(manufacturerVo, old);
  93. manufacturerInfoFacade.updateManufacturer(old);
  94. } catch (Exception e) {
  95. logger.error("manufacturer update", e);
  96. return Result.fail(ResultEnum.SERVICE_FAIL.getValue(), "保存异常");
  97. }
  98. return Result.success();
  99. }
  100. @ApiOperation(value = "保存厂商")
  101. @ApiImplicitParam(name = "manufacturerVo", value = "厂商vo")
  102. @PostMapping(value = "/manufacturer")
  103. public Result<Object> save(@RequestBody ManufacturerVo manufacturerVo) {
  104. try {
  105. if (isManufacturerName(manufacturerVo.getManufacturerName())) {
  106. return Result.fail(ResultEnum.SERVICE_FAIL.getValue(), "厂商名称已被创建");
  107. }
  108. if (isCodeExist(manufacturerVo.getCode())) {
  109. return Result.fail(ResultEnum.SERVICE_FAIL.getValue(), "组织机构代码已存在");
  110. }
  111. ManufacturerInfo manufacturerInfo = new ManufacturerInfo();
  112. BeanUtil.copyProperties(manufacturerVo, manufacturerInfo);
  113. manufacturerInfoFacade.saveManufacturer(manufacturerInfo);
  114. } catch (Exception e) {
  115. logger.error(e.getMessage(), e);
  116. return Result.fail(ResultEnum.SERVICE_FAIL.getValue(), "保存异常");
  117. }
  118. return Result.success();
  119. }
  120. @ApiOperation(value = "删除厂商")
  121. @ApiImplicitParams({@ApiImplicitParam(paramType = "path", name = "id", value = "厂商ID", required = true
  122. , example = "40288a8b699fc2500169a33b20540000")})
  123. @DeleteMapping(value = "manufacturer/{id}")
  124. public Result<Object> del(@PathVariable("id") String id) {
  125. List<ApplyInfo> appList = applyInfoFacade.getAppListByManufacturerId(id);
  126. if (null != appList && (!appList.isEmpty())) {
  127. return Result.fail(ResultEnum.SERVICE_FAIL.getValue(), "厂商已被引用,不可删除!");
  128. }
  129. manufacturerInfoFacade.del(id);
  130. return Result.success("删除成功");
  131. }
  132. @ApiOperation(value = "获取所有厂商的资料")
  133. @GetMapping(value = "manufacturer/allManufacturer")
  134. public Result<List<ManufacturerVo>> getAllManufacturer() {
  135. List<ManufacturerInfo> manufacturerInfoList = new ArrayList<>();
  136. BaseSecurityUser user = ContextUtils.getUserInfo();
  137. //用户范围
  138. String userMt = mtAuthBusiness.getMtAuth(user.getId(), SysConstants.MT_USER);
  139. //所有应用
  140. List<ApplyInfo> applyInfoList = applyInfoFacade.getAllList();
  141. //范围内加过的厂商
  142. Set<String> menuSet = new HashSet<>();
  143. Map<String, OrgTreeNode> allTreeMap = orgInfoFacade.getAllOrgTreeNode();
  144. for (ApplyInfo applyInfo : applyInfoList) {
  145. OrgTreeNode node = allTreeMap.get(applyInfo.getOrgId());
  146. if (node != null) {
  147. logger.info("node getPath路径:{}", node.getPath());
  148. }
  149. //应用所属机构在范围内
  150. if (node != null && OrgInfoUtil.isHaveAuth(node.getValue(), node.getPath(), userMt)) {
  151. //未添加的厂商
  152. if (!menuSet.contains(applyInfo.getManufacturerId())) {
  153. ManufacturerInfo manufacturerInfo = manufacturerInfoFacade.manufacturerInfoDetail(applyInfo.getManufacturerId());
  154. if (manufacturerInfo == null) {
  155. continue;
  156. }
  157. menuSet.add(manufacturerInfo.getId());
  158. logger.info("应用: {}", manufacturerInfo);
  159. manufacturerInfoList.add(manufacturerInfo);
  160. }
  161. }
  162. }
  163. List<ManufacturerVo> list = new ArrayList<>();
  164. for (ManufacturerInfo m : manufacturerInfoList) {
  165. ManufacturerVo manufacturerVo = new ManufacturerVo();
  166. BeanUtil.copyProperties(m, manufacturerVo);
  167. list.add(manufacturerVo);
  168. }
  169. return Result.success(list);
  170. }
  171. @ApiOperation(value = "获取所有厂商的下拉框")
  172. @RequestMapping(value = "/manufacturer/radio")
  173. @ResponseBody
  174. public Result<List<CodeRecord>> getRadio() {
  175. List<ManufacturerInfo> mlist = new ArrayList<>();
  176. UserInfo userInfo = userInfoFacade.userDetail(ContextUtils.getUserInfo().getId());
  177. //外部人员只能配置自己所属厂商下的应用
  178. if (UserTypeEnum.EXTERNAL.getValue().equals(userInfo.getUserType())) {
  179. ManufacturerInfo manufacturerInfo = manufacturerInfoFacade.manufacturerInfoDetail(userInfo.getCompany());
  180. mlist.add(manufacturerInfo);
  181. } else {
  182. return Result.success(manufacturerInfoFacade.getAllCodeRecord());
  183. }
  184. List<CodeRecord> list = new ArrayList<>();
  185. for (ManufacturerInfo m : mlist) {
  186. CodeRecord codeRecord = new CodeRecord();
  187. codeRecord.setValue(m.getId());
  188. codeRecord.setLabel(m.getManufacturerName());
  189. list.add(codeRecord);
  190. }
  191. return Result.success(list);
  192. }
  193. private boolean isManufacturerName(String mName) {
  194. ManufacturerInfo manufacturerInfo = manufacturerInfoFacade.getOneByName(mName);
  195. return manufacturerInfo != null;
  196. }
  197. /**
  198. * 验证厂商代码是否已经存在
  199. *
  200. * @param code 厂商代码
  201. * @return true:存在 false:不存在
  202. */
  203. private boolean isCodeExist(String code) {
  204. ManufacturerInfo manufacturerInfo = manufacturerInfoFacade.detailByCode(code);
  205. return manufacturerInfo != null;
  206. }
  207. }