BaseVehicleServiceImpl.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. package com.ozs.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.github.pagehelper.PageHelper;
  6. import com.ozs.common.core.domain.AjaxResult;
  7. import com.ozs.common.exception.ServiceException;
  8. import com.ozs.common.utils.StringUtils;
  9. import com.ozs.common.utils.bean.BeanUtils;
  10. import com.ozs.common.utils.bean.BeanValidators;
  11. import com.ozs.entity.BaseTerminal;
  12. import com.ozs.entity.BaseVehicle;
  13. import com.ozs.entity.BaseVehicleTerminal;
  14. import com.ozs.entity.vo.BaseVehicleTerminalVo;
  15. import com.ozs.entity.vo.BaseVehicleVo;
  16. import com.ozs.mapper.BaseTerminalMapper;
  17. import com.ozs.mapper.BaseVehicleMapper;
  18. import com.ozs.mapper.BaseVehicleTerminalMapper;
  19. import com.ozs.service.BaseVehicleService;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.util.ObjectUtils;
  23. import javax.validation.Validator;
  24. import java.util.Date;
  25. import java.util.List;
  26. import java.util.stream.Collectors;
  27. /**
  28. * <p>
  29. * 机车信息表 服务实现类
  30. * </p>
  31. *
  32. * @author ozs
  33. * @since 2023-04-11
  34. */
  35. @Service
  36. public class BaseVehicleServiceImpl extends ServiceImpl<BaseVehicleMapper, BaseVehicle> implements BaseVehicleService {
  37. @Autowired
  38. private BaseVehicleMapper baseVehicleMapper;
  39. @Autowired
  40. private BaseTerminalMapper baseTerminalMapper;
  41. @Autowired
  42. private BaseVehicleTerminalMapper baseVehicleTerminalMapper;
  43. @Autowired
  44. protected Validator validator;
  45. @Override
  46. public IPage<BaseVehicle> vehicleList(BaseVehicleVo baseVehicle) {
  47. LambdaQueryWrapper<BaseVehicle> wrapper = new LambdaQueryWrapper<BaseVehicle>();
  48. if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleName())) {
  49. wrapper.eq(BaseVehicle::getVehicleName, baseVehicle.getVehicleName());
  50. }
  51. if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) {
  52. wrapper.eq(BaseVehicle::getVehicleCode, baseVehicle.getVehicleCode());
  53. }
  54. int pageNum = Integer.parseInt(baseVehicle.getPageNum().toString());
  55. int pageSize = Integer.parseInt(baseVehicle.getPageSize().toString());
  56. com.github.pagehelper.Page<BaseVehicle> page = PageHelper.startPage(pageNum, pageSize)
  57. .doSelectPage(() -> baseVehicleMapper.selectList(wrapper));
  58. com.baomidou.mybatisplus.extension.plugins.pagination.Page<BaseVehicle> pageR =
  59. new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(pageNum, pageSize);
  60. pageR.setRecords(page.getResult());
  61. pageR.setTotal(page.getTotal());
  62. return pageR;
  63. }
  64. @Override
  65. public AjaxResult vehicleAdd(BaseVehicle baseVehicle, String userId) {
  66. LambdaQueryWrapper<BaseVehicle> wrapper = new LambdaQueryWrapper<BaseVehicle>();
  67. if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) {
  68. wrapper.eq(BaseVehicle::getVehicleCode, baseVehicle.getVehicleCode());
  69. }
  70. List<BaseVehicle> baseVehicles = baseVehicleMapper.selectList(wrapper);
  71. if (baseVehicles.size() > 0) {
  72. return AjaxResult.error("机车编码已存在!");
  73. }
  74. Date date = new Date();
  75. baseVehicle.setCreateBy(userId);
  76. baseVehicle.setUpdateBy(userId);
  77. baseVehicle.setCreateTime(date);
  78. baseVehicle.setUpdateTime(date);
  79. int insert = baseVehicleMapper.insert(baseVehicle);
  80. if (insert > 0) {
  81. return AjaxResult.success();
  82. } else {
  83. return AjaxResult.error();
  84. }
  85. }
  86. @Override
  87. public AjaxResult vehicleUpdate(BaseVehicle baseVehicle, String userId) {
  88. LambdaQueryWrapper<BaseVehicle> wrapper = new LambdaQueryWrapper<>();
  89. if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) {
  90. wrapper.eq(BaseVehicle::getVehicleCode, baseVehicle.getVehicleCode());
  91. }
  92. List<BaseVehicle> baseVehicles = baseVehicleMapper.selectList(wrapper);
  93. if (baseVehicles.size() > 0) {
  94. return AjaxResult.error("机车编码已存在!");
  95. }
  96. baseVehicle.setUpdateBy(userId);
  97. baseVehicle.setUpdateTime(new Date());
  98. int update = baseVehicleMapper.updateById(baseVehicle);
  99. if (update > 0) {
  100. return AjaxResult.success();
  101. } else {
  102. return AjaxResult.error();
  103. }
  104. }
  105. @Override
  106. public String importBaseVehicle(List<BaseVehicle> accountManageList, boolean updateSupport, String userId) {
  107. int successNum = 0;
  108. int failureNum = 0;
  109. StringBuilder successMsg = new StringBuilder();
  110. StringBuilder failureMsg = new StringBuilder();
  111. for (BaseVehicle baseVehicle2 : accountManageList) {
  112. try {
  113. BaseVehicle baseVehicle = new BaseVehicle();
  114. BeanUtils.copyProperties(baseVehicle2, baseVehicle);
  115. // 判断机车编码是否存在
  116. LambdaQueryWrapper<BaseVehicle> lw = new LambdaQueryWrapper<BaseVehicle>();
  117. if (!StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) {
  118. lw.eq(BaseVehicle::getVehicleCode, baseVehicle.getVehicleCode());
  119. }
  120. BaseVehicle baseVehicle1 = baseVehicleMapper.selectOne(lw);
  121. if (StringUtils.isEmptySunhh(baseVehicle1)) {
  122. BeanValidators.validateWithException(validator, baseVehicle);
  123. baseVehicle.setUpdateBy(userId);
  124. baseVehicle.setCreateBy(userId);
  125. Date date = new Date();
  126. baseVehicle.setCreateTime(date);
  127. baseVehicle.setUpdateTime(date);
  128. int insert = baseVehicleMapper.insert(baseVehicle);
  129. successNum++;
  130. successMsg.append(successNum + "、机车编码 " + baseVehicle.getVehicleCode() + " 导入成功");
  131. } else if (updateSupport) {
  132. BeanValidators.validateWithException(validator, baseVehicle);
  133. LambdaQueryWrapper<BaseVehicle> lambdaQueryWrapper = new LambdaQueryWrapper<BaseVehicle>();
  134. if (!StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) {
  135. lambdaQueryWrapper.eq(BaseVehicle::getVehicleCode, baseVehicle.getVehicleCode());
  136. }
  137. BaseVehicle baseVehicle4 = baseVehicleMapper.selectOne(lambdaQueryWrapper);
  138. if (StringUtils.isEmptySunhh(baseVehicle4)) {
  139. baseVehicle.setUpdateBy(userId);
  140. baseVehicle.setUpdateTime(new Date());
  141. baseVehicle.setId(baseVehicle4.getId());
  142. baseVehicleMapper.updateById(baseVehicle);
  143. successNum++;
  144. successMsg.append(successNum + "、机车编码 " + baseVehicle.getVehicleCode() + " 更新成功");
  145. } else {
  146. failureNum++;
  147. failureMsg.append(failureNum + "、机车编码 " + baseVehicle.getVehicleCode() + "不存在");
  148. }
  149. }
  150. } catch (Exception e) {
  151. failureNum++;
  152. String msg = failureNum + "、机车编码 " + baseVehicle2.getVehicleCode() + " 导入失败:";
  153. failureMsg.append(msg);
  154. log.error(msg, e);
  155. }
  156. }
  157. if (failureNum > 0) {
  158. failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
  159. throw new ServiceException(failureMsg.toString());
  160. } else {
  161. successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条。");
  162. }
  163. return successMsg.toString();
  164. }
  165. @Override
  166. public AjaxResult vehicleDetails(BaseVehicle baseVehicle) {
  167. BaseVehicle baseVehicle1 = baseVehicleMapper.selectById(baseVehicle.getId());
  168. return AjaxResult.success(baseVehicle1);
  169. }
  170. @Override
  171. public List<BaseVehicle> exportBaseVehicle(BaseVehicle baseVehicle) {
  172. LambdaQueryWrapper<BaseVehicle> wrapper = new LambdaQueryWrapper<>();
  173. if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleName())) {
  174. wrapper.eq(BaseVehicle::getVehicleName, baseVehicle.getVehicleName());
  175. }
  176. if (!StringUtils.isEmptySunhh(baseVehicle) && !StringUtils.isEmptySunhh(baseVehicle.getVehicleCode())) {
  177. wrapper.eq(BaseVehicle::getVehicleCode, baseVehicle.getVehicleCode());
  178. }
  179. List<BaseVehicle> baseVehicles = baseVehicleMapper.selectList(wrapper);
  180. return baseVehicles;
  181. }
  182. @Override
  183. public IPage<BaseVehicleTerminalVo> vehicleTerminal(BaseVehicleVo baseVehicleVo) {
  184. BaseTerminal baseTerminal = baseTerminalMapper.selectTerminal(baseVehicleVo.getVehicleCode());
  185. List<String> terminalCodeList = baseTerminalMapper.selectMountCode(baseVehicleVo.getVehicleCode());
  186. // List<String> collect = terminalCodeList.stream().map(BaseTerminal::getTerminalCode).collect(Collectors.toList());
  187. LambdaQueryWrapper<BaseVehicleTerminal> wrapper = new LambdaQueryWrapper<>();
  188. if (!StringUtils.isEmptySunhh(terminalCodeList) && terminalCodeList.size() > 0) {
  189. wrapper.notIn(BaseVehicleTerminal::getTerminalCode, terminalCodeList);
  190. }
  191. // List<BaseVehicleTerminal> baseVehicleTerminalList = baseVehicleTerminalMapper.selectList(wrapper);
  192. int pageNum = Integer.parseInt(baseVehicleVo.getPageNum().toString());
  193. int pageSize = Integer.parseInt(baseVehicleVo.getPageSize().toString());
  194. com.github.pagehelper.Page<BaseVehicleTerminal> page = PageHelper
  195. .startPage(pageNum, pageSize).doSelectPage(() -> baseVehicleTerminalMapper.selectList(wrapper));
  196. com.baomidou.mybatisplus.extension.plugins.pagination.Page<BaseVehicleTerminalVo> pageR =
  197. new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(pageNum, pageSize);
  198. if (!ObjectUtils.isEmpty(page) && page.getResult().size() > 0) {
  199. List<BaseVehicleTerminalVo> dto1 = page.getResult().stream().map(o -> {
  200. BaseVehicleTerminalVo baseVehicleTerminalVo = new BaseVehicleTerminalVo();
  201. BeanUtils.copyProperties(o, baseVehicleTerminalVo);
  202. if (baseTerminal.getTerminalCode().equals(o.getTerminalCode())) {
  203. baseVehicleTerminalVo.setIsMount("1");
  204. } else {
  205. baseVehicleTerminalVo.setIsMount("0");
  206. }
  207. return baseVehicleTerminalVo;
  208. }).collect(Collectors.toList());
  209. pageR.setRecords(dto1);
  210. }
  211. return pageR;
  212. }
  213. @Override
  214. public AjaxResult vehicleTerminalAdd(BaseTerminal baseTerminal1, String userId) {
  215. LambdaQueryWrapper<BaseTerminal> wrapper = new LambdaQueryWrapper<>();
  216. if (!StringUtils.isEmptySunhh(baseTerminal1) && !StringUtils.isEmptySunhh(baseTerminal1.getVehicleCode())) {
  217. wrapper.eq(BaseTerminal::getVehicleCode, baseTerminal1.getVehicleCode());
  218. }
  219. BaseTerminal baseTerminal = baseTerminalMapper.selectOne(wrapper);
  220. if (StringUtils.isEmptySunhh(baseTerminal)) {
  221. BaseTerminal baseTerminal2 = new BaseTerminal();
  222. baseTerminal2.setVehicleCode(baseTerminal1.getVehicleCode());
  223. baseTerminal2.setTerminalCode(baseTerminal1.getTerminalCode());
  224. baseTerminal2.setCreateBy(userId);
  225. baseTerminal2.setUpdateBy(userId);
  226. Date date = new Date();
  227. baseTerminal2.setCreateTime(date);
  228. baseTerminal2.setUpdateTime(date);
  229. int insert = baseTerminalMapper.insert(baseTerminal2);
  230. } else {
  231. baseTerminal.setUpdateBy(userId);
  232. baseTerminal.setUpdateTime(new Date());
  233. baseTerminal.setVehicleCode(baseTerminal1.getVehicleCode());
  234. baseTerminal.setTerminalCode(baseTerminal1.getTerminalCode());
  235. int updateById = baseTerminalMapper.updateById(baseTerminal);
  236. }
  237. return AjaxResult.success();
  238. }
  239. }