GRoadSectionInspectionServiceImpl.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. package com.ruoyi.gas.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  6. import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
  7. import com.ruoyi.common.core.page.PagePlus;
  8. import com.ruoyi.common.core.page.TableDataInfo;
  9. import com.ruoyi.common.utils.PageUtils;
  10. import com.ruoyi.common.utils.StringUtils;
  11. import com.ruoyi.gas.domain.*;
  12. import com.ruoyi.gas.domain.bo.*;
  13. import com.ruoyi.gas.domain.vo.GRoadSectionInspectionVo;
  14. import com.ruoyi.gas.mapper.GRoadSectionInspectionMapper;
  15. import com.ruoyi.gas.service.IGRoadSectionInspectionPhotoService;
  16. import com.ruoyi.gas.service.IGRoadSectionInspectionService;
  17. import com.ruoyi.gas.service.IGRoadsectionProcessService;
  18. import com.ruoyi.gas.service.IGUserService;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import org.springframework.util.ObjectUtils;
  23. import java.util.*;
  24. import java.util.stream.Collectors;
  25. /**
  26. * 路段巡查Service业务层处理
  27. *
  28. * @author ruoyi
  29. * @date 2024-03-06
  30. */
  31. @Service
  32. public class GRoadSectionInspectionServiceImpl extends ServicePlusImpl<GRoadSectionInspectionMapper, GRoadSectionInspection, GRoadSectionInspectionVo> implements IGRoadSectionInspectionService {
  33. @Override
  34. public GRoadSectionInspectionVo queryById(Long id) {
  35. GRoadSectionInspectionVo voById = getVoById(id);
  36. voById.setPhotoList(baseMapper.getPhoto(voById.getId()));
  37. return voById;
  38. }
  39. @Autowired
  40. private IGUserService gUserService;
  41. @Override
  42. public TableDataInfo<GRoadSectionInspectionVo> queryPageList(GRoadSectionInspectionBo bo) {
  43. String ranks = bo.getRanks();
  44. if (StringUtils.isNotEmpty(ranks)) {
  45. bo.setUids(gUserService.getByRanks(ranks));
  46. }
  47. PagePlus<GRoadSectionInspection, GRoadSectionInspectionVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
  48. TableDataInfo<GRoadSectionInspectionVo> tableDataInfo = PageUtils.buildDataInfo(result);
  49. tableDataInfo.getRows().forEach(item -> {
  50. item.setPhotoList(baseMapper.getPhoto(item.getId()));
  51. // item.setCreateByName(baseMapper.getName(item.getCreateBy()));
  52. if (!ObjectUtils.isEmpty(bo.getPostNameArias())) {
  53. //按照顺序审核
  54. //未审核过队长先展示
  55. List<GRoadsectionProcess> listed = roadsectionProcessService.list(new QueryWrapper<GRoadsectionProcess>().eq("emr_id", item.getId()).eq("process_status","0"));
  56. if (ObjectUtils.isEmpty(listed)){
  57. String regex = "^xx.*";
  58. if (bo.getPostNameArias().matches(regex)){
  59. item.setFlag(true);
  60. }
  61. }
  62. else {
  63. String regex = "^xx.*";
  64. if (bo.getPostNameArias().matches(regex)){
  65. if ("0".equals(item.getProcessStatus())){ item.setFlag(false); }
  66. if ("1".equals(item.getProcessStatus())){ item.setFlag(false); }
  67. if ("2".equals(item.getProcessStatus())){ item.setFlag(false); }
  68. if ("-1".equals(item.getProcessStatus())){ item.setFlag(true); }
  69. }else {
  70. if ("0".equals(item.getProcessStatus())){ item.setFlag(true); }
  71. if ("1".equals(item.getProcessStatus())){ item.setFlag(false); }
  72. if ("2".equals(item.getProcessStatus())){ item.setFlag(false); }
  73. if ("-1".equals(item.getProcessStatus())){
  74. if (listed.get(0).getProcessStatus().equals("0")){ item.setFlag(true); }
  75. if (listed.get(0).getProcessStatus().equals("1")){ item.setFlag(false); }
  76. }
  77. }
  78. }
  79. }
  80. });
  81. return tableDataInfo;
  82. }
  83. @Override
  84. public List<GRoadSectionInspectionVo> queryList(GRoadSectionInspectionBo bo) {
  85. return listVo(buildQueryWrapper(bo));
  86. }
  87. private LambdaQueryWrapper<GRoadSectionInspection> buildQueryWrapper(GRoadSectionInspectionBo bo) {
  88. Map<String, Object> params = bo.getParams();
  89. LambdaQueryWrapper<GRoadSectionInspection> lqw = Wrappers.lambdaQuery();
  90. lqw.orderByDesc(GRoadSectionInspection::getCreateTime);
  91. lqw.like(StringUtils.isNotBlank(bo.getSectionName()), GRoadSectionInspection::getSectionName, bo.getSectionName());
  92. lqw.eq(StringUtils.isNotBlank(bo.getSamplingMeterCount()), GRoadSectionInspection::getSamplingMeterCount, bo.getSamplingMeterCount());
  93. lqw.eq(StringUtils.isNotBlank(bo.getFindProblem()), GRoadSectionInspection::getFindProblem, bo.getFindProblem());
  94. lqw.eq(bo.getFindTime() != null, GRoadSectionInspection::getFindTime, bo.getFindTime());
  95. lqw.in(StringUtils.isNotEmpty(bo.getRanks()), GRoadSectionInspection::getCreateBy, !ObjectUtils.isEmpty(bo.getUids()) && bo.getUids().size() > 0 ? bo.getUids() : Arrays.asList(0L));
  96. lqw.eq(StringUtils.isNotBlank(bo.getCreateBy()), GRoadSectionInspection::getCreateBy, bo.getCreateBy());
  97. if (!"-1".equals(bo.getProcessStatus())) {
  98. lqw.eq(StringUtils.isNotBlank(bo.getProcessStatus()), GRoadSectionInspection::getProcessStatus, bo.getProcessStatus());
  99. }else{
  100. lqw.or().in(StringUtils.isNotBlank(bo.getProcessStatus()), GRoadSectionInspection::getProcessStatus, "-1","");
  101. lqw.or().isNull(GRoadSectionInspection::getProcessStatus);
  102. }
  103. if (!ObjectUtils.isEmpty(bo.getCreateTimes())){
  104. lqw.ge(GRoadSectionInspection::getCreateTime, bo.getCreateTimes().get(0));
  105. lqw.le(GRoadSectionInspection::getCreateTime, bo.getCreateTimes().get(1));
  106. }
  107. lqw.orderByDesc(GRoadSectionInspection::getCreateTime);
  108. return lqw;
  109. }
  110. @Autowired
  111. private IGRoadSectionInspectionPhotoService service;
  112. @Override
  113. public Boolean insertByBo(GRoadSectionInspectionBo bo) {
  114. GRoadSectionInspection add = BeanUtil.toBean(bo, GRoadSectionInspection.class);
  115. validEntityBeforeSave(add);
  116. boolean flag = save(add);
  117. if (flag) {
  118. bo.setId(add.getId());
  119. //添加照片
  120. List<String> piclist = bo.getPhotoList();
  121. if (piclist != null) {
  122. for (int i = 0; i < bo.getPhotoList().size(); i++) {
  123. GRoadSectionInspectionPhotoBo photo = new GRoadSectionInspectionPhotoBo();
  124. photo.setParentId(bo.getId());
  125. photo.setPicUrl(bo.getPhotoList().get(i));
  126. service.insertByBo(photo);
  127. }
  128. }
  129. }
  130. return flag;
  131. }
  132. @Override
  133. @Transactional(rollbackFor = Exception.class)
  134. public Boolean updateByBo(GRoadSectionInspectionBo bo) {
  135. GRoadSectionInspection update = BeanUtil.toBean(bo, GRoadSectionInspection.class);
  136. validEntityBeforeSave(update);
  137. List<String> piclist = bo.getPhotoList();
  138. if (piclist != null) {
  139. //原有的照片
  140. List<String> photolist = baseMapper.getPhoto(bo.getId());
  141. //原有的照片不在新传的照片里
  142. List<String> dellist = photolist.stream().filter(i -> !piclist.contains(i)).collect(Collectors.toList());
  143. //删除照片
  144. if (dellist.size() > 0) {
  145. service.deleteByUrl(bo.getId(), dellist);
  146. }
  147. //新传的照片不在原有的照片里
  148. List<String> inslist = piclist.stream().filter(i -> !photolist.contains(i)).collect(Collectors.toList());
  149. if (inslist.size() > 0) {
  150. for (int i = 0; i < inslist.size(); i++) {
  151. if (StringUtils.isNotEmpty(inslist.get(i))) {
  152. //添加照片
  153. GRoadSectionInspectionPhotoBo photo = new GRoadSectionInspectionPhotoBo();
  154. photo.setParentId(bo.getId());
  155. photo.setPicUrl(inslist.get(i));
  156. service.insertByBo(photo);
  157. }
  158. }
  159. }
  160. }
  161. update.setProcessStatus("-1");
  162. return updateById(update);
  163. }
  164. /**
  165. * 保存前的数据校验
  166. *
  167. * @param entity 实体类数据
  168. */
  169. private void validEntityBeforeSave(GRoadSectionInspection entity) {
  170. //TODO 做一些数据校验,如唯一约束
  171. }
  172. @Override
  173. @Transactional(rollbackFor = Exception.class)
  174. public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
  175. if(isValid){
  176. //TODO 做一些业务上的校验,判断是否需要校验
  177. }
  178. roadsectionProcessService.remove(new QueryWrapper<GRoadsectionProcess>().in("emr_id", ids));
  179. return removeByIds(ids);
  180. }
  181. @Override
  182. @Transactional(rollbackFor = Exception.class)
  183. public Boolean batchReview(BatchReviewBo bo) {
  184. List<GRoadSectionInspection> list = new ArrayList<>();
  185. Collection<GRoadsectionProcess> processList = new ArrayList<>();
  186. if (!ObjectUtils.isEmpty(bo.getUids())) {
  187. bo.getUids().forEach(item -> {
  188. GRoadSectionInspection roadSectionInspection = new GRoadSectionInspection();
  189. roadSectionInspection.setId(item);
  190. GRoadsectionProcess processBo = new GRoadsectionProcess();
  191. processBo.setEmrId(item);
  192. processBo.setProcessStatus(bo.getProcessStatus());
  193. processBo.setProcessComments(bo.getProcessComments());
  194. processBo.setUserPost(bo.getPostNameArias());
  195. processList.add(processBo);
  196. list.add(roadSectionInspection);
  197. });
  198. }
  199. boolean b = roadsectionProcessService.saveBatch(processList);
  200. //更新主表状态
  201. updateNetworkManage(list);
  202. return b;
  203. }
  204. // @Async
  205. public void updateNetworkManage(Collection<GRoadSectionInspection> boxList) {
  206. boxList.stream().forEach(obj->{
  207. //最新一条
  208. QueryWrapper<GRoadsectionProcess> queryWrapper = new QueryWrapper<GRoadsectionProcess>().eq("emr_id", obj.getId()).orderByDesc("create_time");
  209. List<GRoadsectionProcess> listed = roadsectionProcessService.list(queryWrapper);
  210. if(!ObjectUtils.isEmpty(listed)) {
  211. //队长审核不通过
  212. GRoadsectionProcess gTeamProcess = listed.get(0);
  213. String regex = "^xx.*";
  214. if (gTeamProcess.getUserPost().matches(regex)) {
  215. if (gTeamProcess.getProcessStatus().equals("1")){
  216. obj.setProcessStatus("2");
  217. updateById(obj);
  218. }else if (gTeamProcess.getProcessStatus().equals("0")){
  219. //队长通过 处事没审核
  220. obj.setProcessStatus("0");
  221. updateById(obj);
  222. }
  223. }else {
  224. //处事审核通过 即主表状态通过
  225. if (gTeamProcess.getProcessStatus().equals("0")){
  226. obj.setProcessStatus("1");
  227. updateById(obj);
  228. }
  229. //处事审核不通过
  230. else if (gTeamProcess.getProcessStatus().equals("1")){
  231. obj.setProcessStatus("2");
  232. updateById(obj);
  233. }
  234. }
  235. }
  236. });
  237. }
  238. @Autowired
  239. private IGRoadsectionProcessService roadsectionProcessService;
  240. }