ResourceServiceImpl.java 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. package com.ruoyi.zhdd.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import cn.hutool.core.util.StrUtil;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  7. import com.ruoyi.common.core.domain.TreeSelect;
  8. import com.ruoyi.common.core.domain.entity.SysDept;
  9. import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
  10. import com.ruoyi.common.core.page.PagePlus;
  11. import com.ruoyi.common.core.page.TableDataInfo;
  12. import com.ruoyi.common.utils.PageUtils;
  13. import com.ruoyi.common.utils.StringUtils;
  14. import com.ruoyi.system.service.ISysDeptService;
  15. import com.ruoyi.zhdd.domain.Resource;
  16. import com.ruoyi.zhdd.domain.ResourceDetail;
  17. import com.ruoyi.zhdd.domain.bo.ResourceBo;
  18. import com.ruoyi.zhdd.domain.bo.ResourceDetailBo;
  19. import com.ruoyi.zhdd.domain.vo.ResourceDetailStatic;
  20. import com.ruoyi.zhdd.domain.vo.ResourceVo;
  21. import com.ruoyi.zhdd.mapper.ResourceMapper;
  22. import com.ruoyi.zhdd.service.IResourceDetailService;
  23. import com.ruoyi.zhdd.service.IResourceService;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Service;
  26. import org.springframework.transaction.annotation.Transactional;
  27. import java.util.ArrayList;
  28. import java.util.Collection;
  29. import java.util.List;
  30. import java.util.Map;
  31. import java.util.stream.Collectors;
  32. /**
  33. * 应急资源Service业务层处理
  34. *
  35. * @author xintong
  36. * @date 2021-10-27
  37. */
  38. @Service
  39. public class ResourceServiceImpl extends ServicePlusImpl<ResourceMapper, Resource, ResourceVo> implements IResourceService {
  40. @Autowired
  41. private IResourceDetailService resourceDetailService;
  42. @Autowired
  43. private ISysDeptService sysDeptService;
  44. @Override
  45. public ResourceVo queryById(String id) {
  46. ResourceVo voById = getVoById(id);
  47. if (voById == null) {
  48. return voById;
  49. }
  50. if (voById.getResourceType() == 1) {
  51. // 应急仓库的类型查询仓库物资
  52. List<ResourceDetail> list = resourceDetailService.list(Wrappers.<ResourceDetail>lambdaQuery().eq(ResourceDetail::getResourceId, id));
  53. voById.setResourceDetailList(list);
  54. }
  55. // 对管理单位使用数组返回
  56. List<TreeSelect> unitList = new ArrayList<>();
  57. if (StrUtil.isNotBlank(voById.getManageUnitId())) {
  58. TreeSelect unit = new TreeSelect();
  59. unit.setId(voById.getManageUnitId());
  60. unit.setLabel(voById.getManageUnit());
  61. unitList.add(unit);
  62. }
  63. voById.setManageUnitList(unitList);
  64. return voById;
  65. }
  66. @Override
  67. public TableDataInfo<ResourceVo> queryPageList(ResourceBo bo) {
  68. PagePlus<Resource, ResourceVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
  69. // 查询物资数量
  70. List<ResourceDetailStatic> resourceDetailStatics = resourceDetailService.queryResourceTotalNum();
  71. Map<String, Integer> collect = resourceDetailStatics.stream().collect(Collectors.toMap(ResourceDetailStatic::getResourceId, ResourceDetailStatic::getNum));
  72. for (ResourceVo resourceVo : result.getRecordsVo()) {
  73. if (resourceVo.getResourceType() == 1) {
  74. Integer integer = collect.get(resourceVo.getId());
  75. resourceVo.setNum(integer == null ? 0 : integer);
  76. }
  77. }
  78. return PageUtils.buildDataInfo(result);
  79. }
  80. @Override
  81. public List<ResourceVo> queryList(ResourceBo bo) {
  82. return listVo(buildQueryWrapper(bo));
  83. }
  84. private LambdaQueryWrapper<Resource> buildQueryWrapper(ResourceBo bo) {
  85. Map<String, Object> params = bo.getParams();
  86. LambdaQueryWrapper<Resource> lqw = Wrappers.lambdaQuery();
  87. lqw.eq(bo.getResourceType() != null, Resource::getResourceType, bo.getResourceType());
  88. lqw.eq(StringUtils.isNotBlank(bo.getLocationType()), Resource::getLocationType, bo.getLocationType());
  89. lqw.like(StringUtils.isNotBlank(bo.getName()), Resource::getName, bo.getName());
  90. lqw.eq(StringUtils.isNotBlank(bo.getAddress()), Resource::getAddress, bo.getAddress());
  91. lqw.eq(StringUtils.isNotBlank(bo.getLongitude()), Resource::getLongitude, bo.getLongitude());
  92. lqw.eq(StringUtils.isNotBlank(bo.getLatitude()), Resource::getLatitude, bo.getLatitude());
  93. lqw.like(StringUtils.isNotBlank(bo.getManageUnit()), Resource::getManageUnit, bo.getManageUnit());
  94. lqw.eq(bo.getNum() != null, Resource::getNum, bo.getNum());
  95. lqw.eq(StringUtils.isNotBlank(bo.getCarryGoods()), Resource::getCarryGoods, bo.getCarryGoods());
  96. lqw.like(StringUtils.isNotBlank(bo.getContactName()), Resource::getContactName, bo.getContactName());
  97. lqw.eq(StringUtils.isNotBlank(bo.getContactPhone()), Resource::getContactPhone, bo.getContactPhone());
  98. lqw.eq(StringUtils.isNotBlank(bo.getManageUnitId()), Resource::getManageUnitId, bo.getManageUnitId());
  99. lqw.in(ObjectUtil.isNotEmpty(bo.getResourceIds()), Resource::getId, bo.getResourceIds());
  100. lqw.in(ObjectUtil.isNotEmpty(bo.getDeptIds()), Resource::getDeptId, bo.getDeptIds());
  101. lqw.orderByDesc(Resource::getCreateTime);
  102. return lqw;
  103. }
  104. @Override
  105. public Boolean insertByBo(ResourceBo bo) {
  106. Resource add = BeanUtil.toBean(bo, Resource.class);
  107. validEntityBeforeSave(add);
  108. return save(add);
  109. }
  110. @Override
  111. public Boolean updateByBo(ResourceBo bo) {
  112. Resource update = BeanUtil.toBean(bo, Resource.class);
  113. validEntityBeforeSave(update);
  114. return updateById(update);
  115. }
  116. /**
  117. * 保存前的数据校验
  118. *
  119. * @param entity 实体类数据
  120. */
  121. private void validEntityBeforeSave(Resource entity) {
  122. //TODO 做一些数据校验,如唯一约束
  123. }
  124. @Override
  125. @Transactional(rollbackFor = Exception.class)
  126. public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
  127. if (isValid) {
  128. //TODO 做一些业务上的校验,判断是否需要校验
  129. }
  130. // 删除资源明细内容
  131. resourceDetailService.remove(Wrappers.<ResourceDetail>lambdaQuery().in(ResourceDetail::getResourceId, ids));
  132. return removeByIds(ids);
  133. }
  134. /**
  135. * 插入应急资源数据
  136. *
  137. * @param bo
  138. * @return
  139. */
  140. @Override
  141. @Transactional(rollbackFor = Exception.class)
  142. public boolean insertResource(ResourceBo bo) {
  143. if (bo.getResourceType() == 3) {
  144. // 车牌号转大写
  145. bo.setName(bo.getName().toUpperCase());
  146. }
  147. Resource add = BeanUtil.toBean(bo, Resource.class);
  148. if (StrUtil.isNotBlank(add.getManageUnitId())) {
  149. // 查询管理单位对应的名称
  150. SysDept sysDept = sysDeptService.selectDeptById(add.getManageUnitId());
  151. if (sysDept != null) {
  152. add.setManageUnit(sysDept.getDeptName());
  153. }
  154. }
  155. boolean save = save(add);
  156. if (save) {
  157. if (bo.getResourceDetailList() != null && bo.getResourceDetailList().size() > 0) {
  158. // 处理应急物资内容
  159. List<ResourceDetail> list = new ArrayList<>();
  160. for (ResourceDetailBo resourceDetailBo : bo.getResourceDetailList()) {
  161. resourceDetailBo.setResourceId(add.getId());
  162. ResourceDetail resourceDetail = BeanUtil.toBean(resourceDetailBo, ResourceDetail.class);
  163. list.add(resourceDetail);
  164. }
  165. resourceDetailService.saveAll(list);
  166. }
  167. }
  168. return save;
  169. }
  170. /**
  171. * 更新资源信息
  172. *
  173. * @param bo
  174. * @return
  175. */
  176. @Override
  177. @Transactional(rollbackFor = Exception.class)
  178. public boolean updateResource(ResourceBo bo) {
  179. if (bo.getResourceType() == 3) {
  180. // 车牌号转大写
  181. bo.setName(bo.getName().toUpperCase());
  182. }
  183. Resource update = BeanUtil.toBean(bo, Resource.class);
  184. if (StrUtil.isNotBlank(update.getManageUnitId())) {
  185. // 查询管理单位对应的名称
  186. SysDept sysDept = sysDeptService.selectDeptById(update.getManageUnitId());
  187. if (sysDept != null) {
  188. update.setManageUnit(sysDept.getDeptName());
  189. }
  190. }
  191. boolean save = updateById(update);
  192. if (save) {
  193. if (bo.getResourceDetailList() != null && bo.getResourceDetailList().size() > 0) {
  194. // 处理应急物资内容
  195. // 先删除原有的数据
  196. resourceDetailService.remove(Wrappers.<ResourceDetail>lambdaQuery().eq(ResourceDetail::getResourceId, update.getId()));
  197. List<ResourceDetail> list = new ArrayList<>();
  198. for (ResourceDetailBo resourceDetailBo : bo.getResourceDetailList()) {
  199. resourceDetailBo.setResourceId(update.getId());
  200. resourceDetailBo.setId(null);
  201. ResourceDetail resourceDetail = BeanUtil.toBean(resourceDetailBo, ResourceDetail.class);
  202. list.add(resourceDetail);
  203. }
  204. resourceDetailService.saveAll(list);
  205. } else if (bo.getResourceDetailList() != null && bo.getResourceDetailList().size() == 0) {
  206. // 清空物资
  207. resourceDetailService.remove(Wrappers.<ResourceDetail>lambdaQuery().eq(ResourceDetail::getResourceId, update.getId()));
  208. }
  209. }
  210. return save;
  211. }
  212. }