BaseLocationInfoServiceImpl.java 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. package com.ruoyi.base.service.impl;
  2. import java.util.ArrayList;
  3. import java.util.LinkedHashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.stream.Collectors;
  7. import com.ruoyi.base.domain.BaseLocationZone;
  8. import com.ruoyi.base.domain.vo.BasLocationTreeSelectVO;
  9. import com.ruoyi.base.domain.vo.TreeSelectVO;
  10. import com.ruoyi.base.mapper.BaseLocationZoneMapper;
  11. import com.ruoyi.base.utils.CommonUtils;
  12. import com.ruoyi.common.utils.DateUtils;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import com.ruoyi.base.mapper.BaseLocationInfoMapper;
  16. import com.ruoyi.base.domain.BaseLocationInfo;
  17. import com.ruoyi.base.service.IBaseLocationInfoService;
  18. /**
  19. * 库位信息Service业务层处理
  20. *
  21. * @author andy
  22. * @date 2022-02-18
  23. */
  24. @Service
  25. public class BaseLocationInfoServiceImpl implements IBaseLocationInfoService {
  26. @Autowired
  27. private BaseLocationInfoMapper baseLocationInfoMapper;
  28. @Autowired
  29. private BaseLocationZoneMapper baseLocationZoneMapper;
  30. /**
  31. * 查询库位信息
  32. *
  33. * @param id 库位信息主键
  34. * @return 库位信息
  35. */
  36. @Override
  37. public BaseLocationInfo selectBaseLocationInfoById(Long id) {
  38. return baseLocationInfoMapper.selectBaseLocationInfoById(id);
  39. }
  40. @Override
  41. public BaseLocationInfo selectBaseLocationInfoByIdOrNo(String idOrNo, Long warehouseId) {
  42. BaseLocationInfo locationInfo = null;
  43. try {
  44. locationInfo = baseLocationInfoMapper.selectBaseLocationInfoById(Long.parseLong(idOrNo));
  45. } catch (Exception e) {
  46. }
  47. if (locationInfo == null) {
  48. return baseLocationInfoMapper.selectBaseLocationInfoByLocationNo(idOrNo, warehouseId);
  49. } else {
  50. return locationInfo;
  51. }
  52. }
  53. /**
  54. * 查询库位信息列表
  55. *
  56. * @param baseLocationInfo 库位信息
  57. * @return 库位信息
  58. */
  59. @Override
  60. public List<BaseLocationInfo> selectBaseLocationInfoList(BaseLocationInfo baseLocationInfo) {
  61. return baseLocationInfoMapper.selectBaseLocationInfoList(baseLocationInfo);
  62. }
  63. /**
  64. * 新增库位信息
  65. *
  66. * @param baseLocationInfo 库位信息
  67. * @return 结果
  68. */
  69. @Override
  70. public int insertBaseLocationInfo(BaseLocationInfo baseLocationInfo) {
  71. baseLocationInfo.setCreateTime(DateUtils.getNowDate());
  72. return baseLocationInfoMapper.insertBaseLocationInfo(baseLocationInfo);
  73. }
  74. /**
  75. * 修改库位信息
  76. *
  77. * @param baseLocationInfo 库位信息
  78. * @return 结果
  79. */
  80. @Override
  81. public int updateBaseLocationInfo(BaseLocationInfo baseLocationInfo) {
  82. baseLocationInfo.setUpdateTime(DateUtils.getNowDate());
  83. return baseLocationInfoMapper.updateBaseLocationInfo(baseLocationInfo);
  84. }
  85. /**
  86. * 批量删除库位信息
  87. *
  88. * @param ids 需要删除的库位信息主键
  89. * @return 结果
  90. */
  91. @Override
  92. public int deleteBaseLocationInfoByIds(Long[] ids) {
  93. return baseLocationInfoMapper.deleteBaseLocationInfoByIds(ids);
  94. }
  95. /**
  96. * 删除库位信息信息
  97. *
  98. * @param id 库位信息主键
  99. * @return 结果
  100. */
  101. @Override
  102. public int deleteBaseLocationInfoById(Long id) {
  103. return baseLocationInfoMapper.deleteBaseLocationInfoById(id);
  104. }
  105. @Override
  106. public List<TreeSelectVO> buildLocationTreeSelect() {
  107. List<BasLocationTreeSelectVO> locationTrees = buildLocationTree(0L);
  108. return locationTrees.stream().map(TreeSelectVO::new).collect(Collectors.toList());
  109. }
  110. @Override
  111. public List<BasLocationTreeSelectVO> buildLocationTree(Long zoneId) {
  112. // 查询区域,库位树把区域也组装进去
  113. BaseLocationZone queryZone = new BaseLocationZone();
  114. queryZone.setStatus("0");
  115. List<BaseLocationZone> zoneList = baseLocationZoneMapper.selectBaseLocationZoneList(queryZone);
  116. List<BasLocationTreeSelectVO> locationTreeSelectVOList = new ArrayList<>();
  117. //循环遍历每个区域的库位
  118. for (BaseLocationZone zone : zoneList) {
  119. BasLocationTreeSelectVO parent = new BasLocationTreeSelectVO();
  120. List<BasLocationTreeSelectVO> children = new ArrayList<>();
  121. BaseLocationInfo query = new BaseLocationInfo();
  122. query.setZoneId(zone.getZoneId());
  123. List<BaseLocationInfo> locationInfoList = baseLocationInfoMapper.selectBaseLocationInfoList(query);
  124. for (BaseLocationInfo b : locationInfoList) {
  125. BasLocationTreeSelectVO child = new BasLocationTreeSelectVO();
  126. child.setId(b.getId());
  127. child.setTreeName(b.getLocationNo());
  128. children.add(child);
  129. }
  130. parent.setId(zone.getZoneId());
  131. parent.setTreeName(zone.getZoneName());
  132. parent.setChildren(children);
  133. locationTreeSelectVOList.add(parent);
  134. }
  135. return locationTreeSelectVOList;
  136. }
  137. @Override
  138. public boolean checkIsLocation(String idOrNo, Long warehouseId) {
  139. BaseLocationInfo baseLocationInfo = this.selectBaseLocationInfoByIdOrNo(idOrNo, warehouseId);
  140. if (baseLocationInfo == null) {
  141. return false;
  142. } else {
  143. return true;
  144. }
  145. }
  146. @Override
  147. public List<BaseLocationInfo> selectSortedLocatinListByZoneId(Long zoneId, Long warehouseId) {
  148. BaseLocationInfo query = new BaseLocationInfo();
  149. query.setWarehouseId(warehouseId);
  150. query.setZoneId(zoneId);
  151. return baseLocationInfoMapper.selectSortedLocationListByZoneId(query);
  152. }
  153. @Override
  154. public int updateLocationStockStatus(Long id, String status) {
  155. return baseLocationInfoMapper.updateLocationStockStatus(id, status);
  156. }
  157. @Override
  158. public List<BaseLocationInfo> selectNeighborLocation(String colNo, Long zoneId) {
  159. List<BaseLocationInfo> colNoList = baseLocationInfoMapper.selectAllColNo();
  160. List<BaseLocationInfo> resultList = new ArrayList<>();
  161. String preColNo = "";
  162. String nextColNo = "";
  163. BaseLocationInfo currentLocation = null;
  164. for (int i = 0; i < colNoList.size(); i++) {
  165. if (!colNoList.get(i).getColNo().equals(colNo) && preColNo.equals("")) {
  166. preColNo = colNoList.get(i).getColNo();
  167. continue;
  168. }
  169. if (colNoList.get(i).getColNo().equals(colNo)) {
  170. currentLocation = colNoList.get(i);
  171. preColNo = colNoList.get(i - 1).getColNo();
  172. if (i + 1 < colNoList.size()) {
  173. nextColNo = colNoList.get(i + 1).getColNo();
  174. }
  175. continue;
  176. }
  177. if (nextColNo.equals(colNoList.get(i).getColNo())) {
  178. continue;
  179. } else {
  180. if (i + 1 < colNoList.size()) {
  181. if (currentLocation != null) {
  182. if (CommonUtils.getString(colNoList.get(i + 1).getBindSku()).equals("") || CommonUtils.getString(colNoList.get(i + 1).getBindSku()).equals(currentLocation.getBindSku())) {
  183. nextColNo = colNoList.get(i + 1).getColNo();
  184. }
  185. }
  186. }
  187. }
  188. }
  189. resultList.addAll(baseLocationInfoMapper.selectLocationByColNo(colNo));
  190. resultList.addAll(baseLocationInfoMapper.selectLocationByColNo(preColNo));
  191. resultList.addAll(baseLocationInfoMapper.selectLocationByColNo(nextColNo));
  192. return resultList;
  193. }
  194. }