VersionDetailFacade.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. package com.diagbot.facade;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  4. import com.diagbot.client.UserServiceClient;
  5. import com.diagbot.dto.RespDTO;
  6. import com.diagbot.dto.VersionDetailDTO;
  7. import com.diagbot.dto.VersionDetailSpecDTO;
  8. import com.diagbot.entity.VersionDetail;
  9. import com.diagbot.entity.VersionInfo;
  10. import com.diagbot.enums.IsDeleteEnum;
  11. import com.diagbot.enums.StatusEnum;
  12. import com.diagbot.exception.CommonErrorCode;
  13. import com.diagbot.exception.CommonException;
  14. import com.diagbot.service.impl.VersionDetailServiceImpl;
  15. import com.diagbot.service.impl.VersionInfoServiceImpl;
  16. import com.diagbot.util.BeanUtil;
  17. import com.diagbot.util.DateUtil;
  18. import com.diagbot.util.ListUtil;
  19. import com.diagbot.util.StringUtil;
  20. import com.diagbot.util.UserUtils;
  21. import com.diagbot.vo.VersionDetailIdVO;
  22. import com.diagbot.vo.VersionDetailVO;
  23. import com.diagbot.vo.VersionInfoAndDetailIdVO;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Component;
  26. import java.util.ArrayList;
  27. import java.util.HashMap;
  28. import java.util.List;
  29. import java.util.Map;
  30. import java.util.stream.Collectors;
  31. /**
  32. * 版本详情
  33. *
  34. * @author wangfeng
  35. * @Description: TODO
  36. * @date 2018年11月21日 上午11:38:40
  37. */
  38. @Component
  39. public class VersionDetailFacade extends VersionDetailServiceImpl {
  40. @Autowired
  41. VersionDetailServiceImpl versionDetailServiceImpl;
  42. @Autowired
  43. UserServiceClient userServiceClient;
  44. @Autowired
  45. VersionInfoServiceImpl versionInfoServiceImpl;
  46. /**
  47. * 根据版本id查询版本详情
  48. *
  49. * @param id
  50. * @return
  51. */
  52. public List<VersionDetailDTO> getById(Long id) {
  53. QueryWrapper<VersionDetail> versionDetailQuery = new QueryWrapper<>();
  54. versionDetailQuery
  55. .eq("is_deleted", IsDeleteEnum.N.getKey())
  56. .eq("STATUS", StatusEnum.Enable.getKey())
  57. .eq("version_id", id).orderByAsc("order_no");
  58. VersionDetail versionDetail = new VersionDetail();
  59. versionDetail.setVersionId(id);
  60. List<VersionDetail> datas = list(versionDetailQuery);
  61. // System.out.println("List<VersionDetail>==="+datas.toString());
  62. List<VersionDetailDTO> dataNew = new ArrayList<VersionDetailDTO>();
  63. // 过滤字段
  64. for (VersionDetail versionData : datas) {
  65. VersionDetailDTO versionDTO = new VersionDetailDTO();
  66. versionDTO.setId(versionData.getId());
  67. //versionDTO.setCreator(versionData.getCreator());
  68. versionDTO.setDescription(versionData.getDescription());
  69. versionDTO.setGmtCreate(versionData.getGmtCreate());
  70. versionDTO.setOrderNo(versionData.getOrderNo());
  71. versionDTO.setRemark(versionData.getRemark());
  72. versionDTO.setStatus(versionData.getStatus());
  73. versionDTO.setTitle(versionData.getTitle());
  74. versionDTO.setVersionId(versionData.getVersionId());
  75. dataNew.add(versionDTO);
  76. }
  77. return dataNew;
  78. }
  79. /**
  80. * 根据版本id查询版本详情
  81. *
  82. * @param id
  83. * @return
  84. */
  85. public List<VersionDetailSpecDTO> getById2(Long id) {
  86. QueryWrapper<VersionDetail> versionDetailQuery = new QueryWrapper<>();
  87. Map<String, Object> mapAll = new HashMap<>();
  88. mapAll.put("is_deleted", IsDeleteEnum.N.getKey());
  89. mapAll.put("version_id", id);
  90. mapAll.put("STATUS", StatusEnum.Enable.getKey());
  91. versionDetailQuery.allEq(mapAll).orderByAsc("order_no");
  92. VersionDetail versionDetail = new VersionDetail();
  93. versionDetail.setVersionId(id);
  94. List<VersionDetail> datas = list(versionDetailQuery);
  95. List<VersionDetailSpecDTO> dataNew = new ArrayList<>();
  96. //过滤字段
  97. dataNew = BeanUtil.listCopyTo(datas, VersionDetailSpecDTO.class);
  98. return dataNew;
  99. }
  100. /**
  101. * 根据版本ids查询版本详情
  102. *
  103. * @param ids
  104. * @return
  105. */
  106. public List<VersionDetailDTO> getByIds(List<Long> ids) {
  107. List<VersionDetailDTO> dataNew = new ArrayList<VersionDetailDTO>();
  108. if (ListUtil.isNotEmpty(ids)) {
  109. QueryWrapper<VersionDetail> versionDetailQuery = new QueryWrapper<>();
  110. versionDetailQuery
  111. .eq("is_deleted", IsDeleteEnum.N.getKey())
  112. .eq("STATUS", StatusEnum.Enable.getKey())
  113. .in("version_id", ids)
  114. .orderByAsc("order_no");
  115. List<VersionDetail> datas = list(versionDetailQuery);
  116. List<String> modifierid = new ArrayList<>();
  117. modifierid = datas.stream().map(ac -> ac.getModifier()).collect(Collectors.toList());
  118. Map<String, String> userNames = new HashMap<>();
  119. if (modifierid.size() > 0) {
  120. RespDTO<Map<String, String>> userNamesDTO = userServiceClient.getUserInfoByIds(modifierid);
  121. if (userNamesDTO == null || !CommonErrorCode.OK.getCode().equals(userNamesDTO.code)) {
  122. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
  123. "获取所有用户信息失败");
  124. }
  125. userNames = userNamesDTO.data;
  126. }
  127. // 过滤字段
  128. for (VersionDetail versionData : datas) {
  129. VersionDetailDTO versionDTO = new VersionDetailDTO();
  130. versionDTO.setId(versionData.getId());
  131. //versionDTO.setCreator(versionData.getCreator());
  132. versionDTO.setModifierid(userNames.get(versionData.getModifier()));
  133. versionDTO.setDescription(versionData.getDescription());
  134. versionDTO.setGmtCreate(versionData.getGmtCreate());
  135. versionDTO.setOrderNo(versionData.getOrderNo());
  136. versionDTO.setRemark(versionData.getRemark());
  137. versionDTO.setStatus(versionData.getStatus());
  138. versionDTO.setTitle(versionData.getTitle());
  139. versionDTO.setVersionId(versionData.getVersionId());
  140. dataNew.add(versionDTO);
  141. }
  142. }
  143. return dataNew;
  144. }
  145. /**
  146. * 更新接口
  147. *
  148. * @param versionDetailVO
  149. * @return
  150. */
  151. public boolean updateVersionDetail(VersionDetailVO versionDetailVO) {
  152. // 1.先判断数据是否存在有效
  153. VersionDetail versionDetailres = checkExist(versionDetailVO.getDetailId());
  154. //验证主表是否是可修改状态
  155. checkExistMain(versionDetailres.getVersionId());
  156. // 3.修改版本详情信息
  157. VersionDetail versionDetail = new VersionDetail();
  158. versionDetail.setGmtModified(DateUtil.now());// 修改时间
  159. versionDetail.setModifier(UserUtils.getCurrentPrincipleID());
  160. versionDetail.setTitle(versionDetailVO.getTitle());
  161. versionDetail.setOrderNo(versionDetailVO.getOrderNo());
  162. versionDetail.setStatus(versionDetailVO.getStatus());
  163. versionDetail.setId(versionDetailVO.getDetailId());
  164. versionDetail.setDescription(versionDetailVO.getDescription());
  165. versionDetail.setRemark(versionDetailVO.getRemark());
  166. boolean res = updateById(versionDetail);
  167. if (!res) {
  168. throw new CommonException(CommonErrorCode.UPDATE_INFO_FAIL);
  169. }
  170. return res;
  171. }
  172. /**
  173. * 删除接口
  174. *
  175. * @param versionDetailIdVO
  176. * @return
  177. */
  178. public boolean cancelVersionDetail(VersionDetailIdVO versionDetailIdVO) {
  179. // 1.先判断数据是否存在有效
  180. VersionDetail versionDetailres = checkExist(versionDetailIdVO.getId());
  181. //验证主表是否是可修改状态
  182. checkExistMain(versionDetailres.getVersionId());
  183. UpdateWrapper<VersionDetail> versionDetailNew = new UpdateWrapper<>();
  184. versionDetailNew
  185. .in("id", versionDetailIdVO.getId())
  186. .eq("is_deleted", IsDeleteEnum.N.getKey())
  187. .set("is_deleted", IsDeleteEnum.Y.getKey())
  188. .set("modifier", UserUtils.getCurrentPrincipleID())
  189. .set("gmt_modified", DateUtil.now());
  190. return update(new VersionDetail(), versionDetailNew);
  191. }
  192. /**
  193. * 增加明细接口
  194. *
  195. * @param versionInfoAndDetailIdVO
  196. * @return
  197. */
  198. public boolean addVersionDetail(VersionInfoAndDetailIdVO versionInfoAndDetailIdVO) {
  199. //1.增加明细前先判断主版本号的id是否有效
  200. checkExistMain(versionInfoAndDetailIdVO.getVersionInfoId());
  201. List<VersionDetail> dataNew = new ArrayList<VersionDetail>();
  202. List<VersionDetailVO> datas = versionInfoAndDetailIdVO.getVersionDetail();
  203. for (VersionDetailVO data : datas) {
  204. VersionDetail versionDetail = new VersionDetail();
  205. versionDetail.setCreator(UserUtils.getCurrentPrincipleID());
  206. versionDetail.setGmtCreate(DateUtil.now());
  207. versionDetail.setGmtModified(DateUtil.now());
  208. versionDetail.setModifier(UserUtils.getCurrentPrincipleID());
  209. versionDetail.setDescription(data.getDescription());
  210. versionDetail.setOrderNo(data.getOrderNo());
  211. versionDetail.setTitle(data.getTitle());
  212. versionDetail.setVersionId(versionInfoAndDetailIdVO.getVersionInfoId());
  213. versionDetail.setRemark(data.getRemark());
  214. versionDetail.setStatus(String.valueOf(StatusEnum.Enable.getKey()));
  215. dataNew.add(versionDetail);
  216. }
  217. boolean res = versionDetailServiceImpl.saveBatch(dataNew);
  218. return res;
  219. }
  220. /**
  221. * 判断数据是否存在有效
  222. *
  223. * @param id
  224. */
  225. private VersionDetail checkExist(Long id) {
  226. // 1.先判断数据是否存在有效
  227. QueryWrapper<VersionDetail> VersionInfoFand = new QueryWrapper<>();
  228. VersionInfoFand.eq("is_deleted", IsDeleteEnum.N.getKey()).eq("id", id);
  229. VersionDetail versionDetail = getOne(VersionInfoFand, false);
  230. if (null == versionDetail) {
  231. throw new CommonException(CommonErrorCode.NOT_EXISTS, "该数据不存在");
  232. }
  233. return versionDetail;
  234. }
  235. /**
  236. * 判断数据是否存在有效(主版本)
  237. *
  238. * @param id
  239. */
  240. private void checkExistMain(Long id) {
  241. // 1.先判断数据是否存在有效
  242. QueryWrapper<VersionInfo> VersionInfoFand = new QueryWrapper<>();
  243. VersionInfoFand.eq("is_deleted", IsDeleteEnum.N.getKey())
  244. .eq("id", id);
  245. VersionInfo versionInfo = versionInfoServiceImpl.getOne(VersionInfoFand, false);
  246. if (null == versionInfo) {
  247. throw new CommonException(CommonErrorCode.NOT_EXISTS, "主版本号数据不存在");
  248. }
  249. if (StringUtil.isNotBlank(versionInfo.getStatus())
  250. && versionInfo.getStatus().equals(String.valueOf(StatusEnum.Disable.getKey()))) {
  251. throw new CommonException(CommonErrorCode.NOT_EXISTS, "该版本已停用");
  252. }
  253. }
  254. }