TWarehouseServiceImpl.java 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789
  1. package com.ruoyi.basicData.service.impl;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  5. import com.ruoyi.basicData.domain.TCustomerContact;
  6. import com.ruoyi.basicData.domain.TWarehouseArea;
  7. import com.ruoyi.basicData.mapper.TCustomerContactMapper;
  8. import com.ruoyi.basicData.mapper.TWarehouseAreaMapper;
  9. import com.ruoyi.basicData.mapper.TWarehouseMapper;
  10. import com.ruoyi.basicData.service.ITWarehouseService;
  11. import com.ruoyi.common.constant.UserConstants;
  12. import com.ruoyi.common.core.domain.AjaxResult;
  13. import com.ruoyi.common.core.domain.TreeSelect;
  14. import com.ruoyi.common.core.domain.entity.SysUser;
  15. import com.ruoyi.common.core.domain.entity.TWarehouse;
  16. import com.ruoyi.common.core.domain.model.LoginUser;
  17. import com.ruoyi.common.exception.CustomException;
  18. import com.ruoyi.common.utils.DateUtils;
  19. import com.ruoyi.common.utils.SecurityUtils;
  20. import com.ruoyi.common.utils.StringUtils;
  21. import com.ruoyi.warehouseBusiness.domain.TAnnex;
  22. import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
  23. import com.ruoyi.warehouseBusiness.domain.dto.WarehouseSubmitDTO;
  24. import com.ruoyi.warehouseBusiness.domain.enums.AnnexActEnum;
  25. import com.ruoyi.warehouseBusiness.domain.vo.WarehouseInfoVO;
  26. import com.ruoyi.warehouseBusiness.mapper.TAnnexMapper;
  27. import com.ruoyi.warehouseBusiness.mapper.TWarehouseBillsMapper;
  28. import org.apache.ibatis.annotations.Param;
  29. import org.springframework.beans.BeanUtils;
  30. import org.springframework.beans.factory.annotation.Autowired;
  31. import org.springframework.stereotype.Service;
  32. import org.springframework.transaction.annotation.Transactional;
  33. import org.springframework.transaction.interceptor.TransactionAspectSupport;
  34. import java.math.BigDecimal;
  35. import java.util.*;
  36. import java.util.stream.Collectors;
  37. /**
  38. * 仓库Service业务层处理
  39. *
  40. * @author ruoyi
  41. * @date 2020-12-11
  42. */
  43. @Service
  44. public class TWarehouseServiceImpl implements ITWarehouseService {
  45. @Autowired
  46. private TAnnexMapper annexMapper;
  47. @Autowired
  48. private TWarehouseMapper tWarehouseMapper;
  49. @Autowired
  50. private TWarehouseAreaMapper tWarehouseAreaMapper;
  51. @Autowired
  52. private TWarehouseBillsMapper tWarehouseBillsMapper;
  53. @Autowired
  54. private TCustomerContactMapper customerContactMapper;
  55. /**
  56. * 查询仓库
  57. *
  58. * @param fId 仓库ID
  59. * @return 仓库
  60. */
  61. @Override
  62. public WarehouseInfoVO selectTWarehouseById(Long fId) {
  63. WarehouseInfoVO warehouseInfoVO = new WarehouseInfoVO();
  64. TWarehouse tWarehouse = tWarehouseMapper.selectTWarehouseById(fId);
  65. if (Objects.nonNull(tWarehouse)) {
  66. BeanUtils.copyProperties(tWarehouse, warehouseInfoVO);
  67. TAnnex annex = new TAnnex();
  68. annex.setfPid(tWarehouse.getfId());
  69. annex.setfActid(AnnexActEnum.WAREHOUSE.getType());
  70. List<TAnnex> annexList = annexMapper.selectTAnnexList(annex);
  71. warehouseInfoVO.setAnnexList(annexList);
  72. }
  73. return warehouseInfoVO;
  74. }
  75. @Override
  76. public Map<String, Object> selectTWarehouseById1(Long fId) {
  77. Map<String, Object> map = new HashMap<>();
  78. TWarehouse tWarehouse = tWarehouseMapper.selectTWarehouseById(fId);
  79. if (StringUtils.isNotNull(tWarehouse)) {
  80. map.put("tWarehouse", tWarehouse);
  81. }
  82. TWarehouseArea tWarehouseArea = new TWarehouseArea();
  83. tWarehouseArea.setfWarehouseid(fId);
  84. List<TWarehouseArea> tWarehouseAreaList = tWarehouseAreaMapper.selectTWarehouseAreaList(tWarehouseArea);
  85. if (StringUtils.isNotEmpty(tWarehouseAreaList)) {
  86. map.put("tWarehouseArea", tWarehouseAreaList);
  87. }
  88. return map;
  89. }
  90. /**
  91. * 查询仓库列表
  92. *
  93. * @param tWarehouse 仓库
  94. * @return 仓库
  95. */
  96. @Override
  97. public List<TWarehouse> selectTWarehouseList(TWarehouse tWarehouse) {
  98. return tWarehouseMapper.selectTWarehouseList(tWarehouse);
  99. }
  100. @Override
  101. public List<TWarehouse> selectTWarehouseLists(TWarehouse tWarehouse) {
  102. return tWarehouseMapper.selectTWarehouseLists(tWarehouse);
  103. }
  104. @Override
  105. public List<Map<String, Object>> appGetWarehouseList() {
  106. TCustomerContact customerContact = new TCustomerContact();
  107. SysUser user = SecurityUtils.getLoginUser().getUser();
  108. Long corpId = null;
  109. if ("外部用户".equals(user.getDept().getDeptName())) {
  110. customerContact.setfTel(SecurityUtils.getLoginUser().getUser().getUserName());
  111. List<TCustomerContact> tCustomerContacts = customerContactMapper.selectTCustomerContactList(customerContact);
  112. if (CollectionUtils.isNotEmpty(tCustomerContacts)) {
  113. corpId = tCustomerContacts.get(0).getfPid();
  114. }
  115. }
  116. return tWarehouseMapper.appGetWarehouseList(corpId);
  117. }
  118. /**
  119. * 新增仓库
  120. *
  121. * @param tWarehouse 仓库
  122. * @return 结果
  123. */
  124. @Override
  125. @Transactional
  126. public int insertTWarehouse(TWarehouse tWarehouse) {
  127. tWarehouse.setCreateTime(DateUtils.getNowDate());
  128. TWarehouse info = tWarehouseMapper.selectTWarehouseById(tWarehouse.getParentId());
  129. // 如果父节点不为正常状态,则不允许新增子节点
  130. if (!UserConstants.DEPT_NORMAL.equals(info.getfStatus())) {
  131. throw new CustomException("部门停用,不允许新增");
  132. }
  133. tWarehouse.setAncestors(info.getAncestors() + "," + tWarehouse.getParentId());
  134. // 所有节点转换成中文拼接
  135. String fWarehouseInformation = warehouseName(info.getAncestors() + "," + tWarehouse.getParentId(), tWarehouse.getfName());
  136. tWarehouse.setfWarehouseInformation(fWarehouseInformation);
  137. tWarehouseMapper.insertTWarehouse(tWarehouse);
  138. // 更新库容
  139. if (tWarehouse.getfLocation() == 1) {
  140. int i = updateWarehousefTotalgross(tWarehouse.getAncestors());
  141. if (i <= 0) {
  142. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  143. return 0;
  144. }
  145. }
  146. return 1;
  147. }
  148. @Override
  149. @Transactional
  150. public AjaxResult insertTWarehouse1(String tWarehouse, String tWarehouseArea, LoginUser loginUser) {
  151. if (StringUtils.isEmpty(tWarehouse)) {
  152. return AjaxResult.error("提交失败:仓库信息为空");
  153. }
  154. if (StringUtils.isEmpty(tWarehouseArea) && !"[{}]".equals(tWarehouseArea)) {
  155. return AjaxResult.error("提交失败:库区为空");
  156. }
  157. Long fPid = null;
  158. TWarehouse tWarehouses = JSONArray.parseObject(tWarehouse, TWarehouse.class);
  159. JSONArray jsonArray = JSONArray.parseArray(tWarehouseArea);
  160. List<TWarehouseArea> tWarehouseAreaList = JSONObject.parseArray(jsonArray.toJSONString(), TWarehouseArea.class);
  161. if (StringUtils.isNull(tWarehouses.getfId())) {
  162. tWarehouses.setCreateBy(loginUser.getUser().getUserName());
  163. tWarehouses.setCreateTime(new Date());
  164. tWarehouses.setfStatus("0");
  165. tWarehouseMapper.insertTWarehouse(tWarehouses);
  166. fPid = tWarehouses.getfId();
  167. } else {
  168. fPid = tWarehouses.getfId();
  169. tWarehouses.setUpdateBy(loginUser.getUser().getUserName());
  170. tWarehouses.setUpdateTime(new Date());
  171. if (tWarehouses.getfStatus() != null && tWarehouses.getfStatus().equals("1")) {
  172. TWarehouseBills tWarehouseBill = new TWarehouseBills();
  173. tWarehouseBill.setfWarehouseid(tWarehouses.getfId());
  174. List<TWarehouseBills> tWarehouseBillList = tWarehouseBillsMapper.selectTWarehousebillsList(tWarehouseBill);
  175. if (tWarehouseBillList != null && !tWarehouseBillList.isEmpty()) {
  176. return AjaxResult.error("仓库在库存总账有记录不可变更状态");
  177. }
  178. }
  179. tWarehouseMapper.updateTWarehouse(tWarehouses);
  180. // tWarehouseAreaMapper.deleteTWarehouseAreaByTWarehoused(fPid);
  181. }
  182. for (TWarehouseArea cc : tWarehouseAreaList) {
  183. if (StringUtils.isNull(cc.getfNo()) ||
  184. StringUtils.isNull(cc.getfName()) ||
  185. StringUtils.isNull(cc.getfAddr())) {
  186. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  187. return AjaxResult.error("请完善库区明细信息");
  188. }
  189. if (cc.getfId() != null) {
  190. cc.setUpdateBy(loginUser.getUser().getUserName());
  191. cc.setUpdateTime(new Date());
  192. tWarehouseAreaMapper.updateTWarehouseArea(cc);
  193. } else {
  194. cc.setfWarehouseid(fPid);
  195. cc.setfStatus("0");
  196. cc.setCreateBy(loginUser.getUser().getUserName());
  197. cc.setCreateTime(new Date());
  198. tWarehouseAreaMapper.insertTWarehouseArea(cc);
  199. }
  200. }
  201. return AjaxResult.success();
  202. }
  203. /**
  204. * 修改仓库
  205. *
  206. * @param tWarehouse 仓库
  207. * @return 结果
  208. */
  209. @Override
  210. @Transactional
  211. public AjaxResult updateTWarehouse(TWarehouse tWarehouse) {
  212. if (tWarehouse.getfStatus() != null && tWarehouse.getfStatus().equals("1")) {
  213. TWarehouseBills tWarehouseBill = new TWarehouseBills();
  214. tWarehouseBill.setfWarehouseid(tWarehouse.getfId());
  215. List<TWarehouseBills> tWarehouseBillList = tWarehouseBillsMapper.selectTWarehousebillsList(tWarehouseBill);
  216. if (tWarehouseBillList != null && !tWarehouseBillList.isEmpty()) {
  217. return AjaxResult.error("仓库在库存总账有记录不可变更状态");
  218. }
  219. }
  220. tWarehouse.setUpdateTime(DateUtils.getNowDate());
  221. tWarehouseMapper.updateTWarehouse(tWarehouse);
  222. return AjaxResult.success();
  223. }
  224. @Override
  225. public int updateTWarehouses(TWarehouse tWarehouse) {
  226. TWarehouse newParentTWarehouse = tWarehouseMapper.selectTWarehouseById(tWarehouse.getParentId());
  227. TWarehouse oldTWarehouse = tWarehouseMapper.selectTWarehouseById(tWarehouse.getfId());
  228. if (StringUtils.isNotNull(newParentTWarehouse) && StringUtils.isNotNull(oldTWarehouse)) {
  229. String newAncestors = newParentTWarehouse.getAncestors() + "," + newParentTWarehouse.getfId();
  230. String oldAncestors = oldTWarehouse.getAncestors();
  231. tWarehouse.setAncestors(newAncestors);
  232. updateDeptChildren(tWarehouse.getfId(), newAncestors, oldAncestors);
  233. // 修改仓库信息
  234. String fWarehouseInformation = warehouseName(newAncestors, tWarehouse.getfName());
  235. tWarehouse.setfWarehouseInformation(fWarehouseInformation);
  236. }
  237. int result = tWarehouseMapper.updateTWarehouse(tWarehouse);
  238. if (UserConstants.DEPT_NORMAL.equals(tWarehouse.getfStatus())) {
  239. // 如果该部门是启用状态,则启用该部门的所有上级部门
  240. updateParentDeptStatus(tWarehouse);
  241. }
  242. // 更新库容
  243. if (tWarehouse.getfLocation() == 1) {
  244. int i = updateWarehousefTotalgross(tWarehouse.getAncestors());
  245. if (i <= 0) {
  246. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  247. return 0;
  248. }
  249. }
  250. return result;
  251. }
  252. /**
  253. * 修改子元素关系
  254. *
  255. * @param deptId 被修改的部门ID
  256. * @param newAncestors 新的父ID集合
  257. * @param oldAncestors 旧的父ID集合
  258. */
  259. public void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors) {
  260. List<TWarehouse> children = tWarehouseMapper.selectChildrenDeptById(deptId);
  261. for (TWarehouse child : children) {
  262. child.setAncestors(child.getAncestors().replace(oldAncestors, newAncestors));
  263. }
  264. if (children.size() > 0) {
  265. tWarehouseMapper.updateDeptChildren(children);
  266. }
  267. }
  268. /**
  269. * 修改该部门的父级部门状态
  270. *
  271. * @param tWarehouse 当前部门
  272. */
  273. private void updateParentDeptStatus(TWarehouse tWarehouse) {
  274. String updateBy = tWarehouse.getUpdateBy();
  275. tWarehouse = tWarehouseMapper.selectTWarehouseById(tWarehouse.getfId());
  276. tWarehouse.setUpdateBy(updateBy);
  277. tWarehouseMapper.updateDeptStatus(tWarehouse);
  278. }
  279. /**
  280. * 批量删除仓库
  281. *
  282. * @param fIds 需要删除的仓库ID
  283. * @return 结果
  284. */
  285. @Override
  286. @Transactional
  287. public AjaxResult deleteTWarehouseByIds(Long[] fIds) {
  288. // 查询仓库主表 是否有仓库在使用
  289. int i = 1;
  290. for (Long id : fIds) {
  291. TWarehouseBills tWarehouseBill = new TWarehouseBills();
  292. tWarehouseBill.setfWarehouseid(id);
  293. List<TWarehouseBills> tWarehouseBillList = tWarehouseBillsMapper.selectTWarehousebillsList(tWarehouseBill);
  294. if (tWarehouseBillList != null && !tWarehouseBillList.isEmpty()) {
  295. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  296. return AjaxResult.error("仓库第" + i + "行仓库有货物不可删除");
  297. }
  298. tWarehouseMapper.deleteTWarehouseById(id);
  299. i++;
  300. }
  301. // tWarehouseMapper.deleteTWarehouseByIds(fIds);
  302. return AjaxResult.success();
  303. }
  304. /**
  305. * 删除仓库信息
  306. *
  307. * @param fId 仓库ID
  308. * @return 结果
  309. */
  310. @Override
  311. @Transactional
  312. public int deleteTWarehouseById(Long fId) {
  313. TWarehouse warehouse = tWarehouseMapper.selectTWarehouseById(fId);
  314. tWarehouseMapper.deleteTWarehouseById(fId);
  315. updateParentGross(warehouse.getAncestors());
  316. annexMapper.deleteByPid(fId, AnnexActEnum.WAREHOUSE.getType());
  317. return 1;
  318. }
  319. @Override
  320. public String checkNameUnique(TWarehouse tWarehouse) {
  321. Long fId = StringUtils.isNull(tWarehouse.getfId()) ? -1L : tWarehouse.getfId();
  322. TWarehouse info = tWarehouseMapper.checkDeptNameUnique(tWarehouse.getfName(), tWarehouse.getParentId());
  323. if (StringUtils.isNotNull(info) && info.getfId().longValue() != fId.longValue()) {
  324. return UserConstants.NOT_UNIQUE;
  325. }
  326. return UserConstants.UNIQUE;
  327. }
  328. @Override
  329. public boolean hasChildByfId(Long fId) {
  330. int result = tWarehouseMapper.hasChildByfId(fId);
  331. return result > 0 ? true : false;
  332. }
  333. @Override
  334. public boolean checkDeptExistWarehouse(Long deptId) {
  335. int result = tWarehouseMapper.checkDeptExistarehouse(deptId);
  336. return result > 0 ? true : false;
  337. }
  338. @Override
  339. public boolean checkDeptExistWarehouseItems(Long deptId) {
  340. int result = tWarehouseMapper.checkDeptExistWarehouseItems(deptId);
  341. return result > 0 ? true : false;
  342. }
  343. /**
  344. * 新增仓库
  345. *
  346. * @param tWarehouse
  347. * @return
  348. */
  349. @Override
  350. public AjaxResult warehouseSubmit(WarehouseSubmitDTO tWarehouse) {
  351. // 登录用户
  352. String username = SecurityUtils.getUsername();
  353. tWarehouse.setCreateTime(new Date());
  354. tWarehouse.setCreateBy(username);
  355. TWarehouse info = tWarehouseMapper.selectTWarehouseById(tWarehouse.getParentId());
  356. // 如果父节点不为正常状态,则不允许新增子节点
  357. if (!UserConstants.DEPT_NORMAL.equals(info.getfStatus())) {
  358. throw new CustomException("部门停用,不允许新增");
  359. }
  360. tWarehouse.setAncestors(info.getAncestors() + "," + tWarehouse.getParentId());
  361. // 所有节点转换成中文拼接
  362. String fWarehouseInformation = warehouseName(info.getAncestors() + "," + tWarehouse.getParentId(), tWarehouse.getfName());
  363. tWarehouse.setfWarehouseInformation(fWarehouseInformation);
  364. tWarehouse.setfStatus("0");
  365. tWarehouseMapper.insertTWarehouse(tWarehouse);
  366. updateParentGross(tWarehouse.getAncestors());
  367. if (CollectionUtils.isNotEmpty(tWarehouse.getAnnexList())) {
  368. tWarehouse.getAnnexList().forEach(li -> {
  369. li.setfPid(tWarehouse.getfId());
  370. li.setfActid(AnnexActEnum.WAREHOUSE.getType());
  371. if (Objects.nonNull(li.getfId())) {
  372. li.setCreateTime(new Date());
  373. li.setCreateBy(username);
  374. } else {
  375. li.setUpdateTime(new Date());
  376. li.setUpdateBy(username);
  377. }
  378. annexMapper.insertTAnnex(li);
  379. });
  380. }
  381. return AjaxResult.success();
  382. }
  383. /**
  384. * 修改仓库
  385. *
  386. * @param tWarehouse
  387. * @return
  388. */
  389. @Override
  390. @Transactional
  391. public AjaxResult edit(WarehouseSubmitDTO tWarehouse) {
  392. // 登录用户
  393. String username = SecurityUtils.getUsername();
  394. tWarehouse.setUpdateBy(username);
  395. tWarehouseMapper.updateTWarehouse(tWarehouse);
  396. updateParentGross(tWarehouse.getAncestors());
  397. annexMapper.deleteByPid(tWarehouse.getfId(), AnnexActEnum.WAREHOUSE.getType());
  398. if (CollectionUtils.isNotEmpty(tWarehouse.getAnnexList())) {
  399. tWarehouse.getAnnexList().forEach(li -> {
  400. li.setfPid(tWarehouse.getfId());
  401. li.setfActid(AnnexActEnum.WAREHOUSE.getType());
  402. if (Objects.nonNull(li.getfId())) {
  403. li.setCreateTime(new Date());
  404. li.setCreateBy(username);
  405. } else {
  406. li.setUpdateTime(new Date());
  407. li.setUpdateBy(username);
  408. }
  409. annexMapper.insertTAnnex(li);
  410. });
  411. }
  412. return AjaxResult.success();
  413. }
  414. /**
  415. * 仓库懒加载列表
  416. *
  417. * @param tWarehouse
  418. * @return
  419. */
  420. @Override
  421. public List<TWarehouse> lazyList(TWarehouse tWarehouse) {
  422. if (StringUtils.isNull(tWarehouse.getParentId()) && StringUtils.isEmpty(tWarehouse.getfName()) &&
  423. StringUtils.isNull(tWarehouse.getfStatus())) {
  424. tWarehouse.setParentId(0L);
  425. }
  426. return tWarehouseMapper.lazyList(tWarehouse);
  427. }
  428. @Override
  429. public TWarehouse selectByCode(String position) {
  430. return tWarehouseMapper.getWarehouseByNo(position);
  431. }
  432. @Override
  433. public List<Map<String, Object>> queryGoodsAccountByPageV1(String warehouseCode,
  434. String ownerName,
  435. String goodsName,
  436. String specifications,
  437. String producing,
  438. String materialQuality,
  439. String level,
  440. Integer pageNo,
  441. Integer pageSize){
  442. return tWarehouseMapper.queryGoodsAccountByPageV1(warehouseCode, ownerName, goodsName, specifications,
  443. producing, materialQuality, level, pageNo, pageSize);
  444. }
  445. @Override
  446. public List<Map<String, Object>> queryGoodsAccountDetailByPageV1(String warehouseCode,String ownerName,String ownerCode,String goodsName,String specifications,
  447. String producing,String materialQuality,String level, String receiptDoc,String billOfLading,
  448. String areaName,String areaCode,String slotName,String slotCode,Integer pageNo,Integer pageSize){
  449. return tWarehouseMapper.queryGoodsAccountDetailByPageV1(warehouseCode, ownerName, ownerCode, goodsName, specifications,
  450. producing, materialQuality, level, receiptDoc, billOfLading, areaName, areaCode, slotName, slotCode, pageNo, pageSize);
  451. }
  452. /**
  453. * 获取仓库详细信息
  454. */
  455. @Override
  456. public TWarehouse getWareHouseInfo(String wareHouseId) {
  457. return tWarehouseMapper.getWareHouseInfo(wareHouseId);
  458. }
  459. /**
  460. * 获取最新的库存数据
  461. */
  462. @Override
  463. public Map<String, Object> getStorageInfo(String wareHouseId) {
  464. return tWarehouseMapper.getStorageInfo(wareHouseId);
  465. }
  466. /**
  467. * 库存吞吐趋势信息
  468. */
  469. @Override
  470. public List<Map<String, Object>> getTimeStorageInfo(String wareHouseId, String startTime, String endTime) {
  471. return tWarehouseMapper.getTimeStorageInfo(wareHouseId,startTime,endTime);
  472. }
  473. /**
  474. * 库存吞吐趋势信息
  475. */
  476. @Override
  477. public List<Map<String, Object>> getTimeThroughputInfo(String wareHouseId, String startTime, String endTime) {
  478. return tWarehouseMapper.getTimeThroughputInfo(wareHouseId,startTime,endTime);
  479. }
  480. /**
  481. * 货物保管信息
  482. */
  483. @Override
  484. public Map<String, Object> getCargoInfo(String wareHouseId, String startTime, String endTime, String isPledge) {
  485. return tWarehouseMapper.getCargoInfo(wareHouseId,startTime,endTime,isPledge);
  486. }
  487. /**
  488. * 货物保管信息
  489. */
  490. @Override
  491. public List<Map<String, Object>> getGoodsList(String wareHouseId, String startTime, String endTime) {
  492. return tWarehouseMapper.getGoodsList(wareHouseId,startTime,endTime);
  493. }
  494. /**
  495. * 仓库保管趋势
  496. */
  497. @Override
  498. public List<Map<String, Object>> getCargoInfoTrend(String wareHouseId, String startTime, String endTime, String FTradeModeId) {
  499. return tWarehouseMapper.getCargoInfoTrend(wareHouseId,startTime,endTime,FTradeModeId);
  500. }
  501. /**
  502. * 获取货物品类top值
  503. */
  504. @Override
  505. public List<Map<String, Object>> getStorageTop(String wareHouseId, Integer countType, Integer topCnt) {
  506. return tWarehouseMapper.getStorageTop(wareHouseId,countType,topCnt);
  507. }
  508. /**
  509. * 获取货主仓库top值
  510. */
  511. @Override
  512. public List<Map<String, Object>> getGoodsTop(String wareHouseId, Integer countType, Integer topCnt) {
  513. return tWarehouseMapper.getGoodsTop(wareHouseId,countType,topCnt);
  514. }
  515. /**
  516. * 过户交易信息获取
  517. */
  518. @Override
  519. public List<Map<String, Object>> getTransferTransaction(String wareHouseId, String startTime, String endTime) {
  520. return tWarehouseMapper.getTransferTransaction(wareHouseId,startTime,endTime);
  521. }
  522. /**
  523. * 最新的作业统计
  524. */
  525. @Override
  526. public Map<String, Object> getWorkInfo(String wareHouseId, String countType) {
  527. return tWarehouseMapper.getWorkInfo(wareHouseId, countType);
  528. }
  529. /**
  530. * 作业统计趋势数据
  531. */
  532. @Override
  533. public List<Map<String, Object>> getWorkTrend(String wareHouseId, String startTime, String endTime, String countType) {
  534. return tWarehouseMapper.getWorkTrend(wareHouseId, startTime, endTime, countType);
  535. }
  536. @Override
  537. public String checkUFNoUnique(TWarehouse tWarehouse) {
  538. TWarehouse tWarehouse1 = tWarehouseMapper.checkFNoUnique(tWarehouse.getfNo());
  539. if (StringUtils.isNotNull(tWarehouse1) && tWarehouse1.getfId() != tWarehouse.getfId()) {
  540. return UserConstants.NOT_UNIQUE;
  541. }
  542. return UserConstants.UNIQUE;
  543. }
  544. @Override
  545. public String checkUFNnameUnique(TWarehouse tWarehouse) {
  546. TWarehouse tWarehouse1 = tWarehouseMapper.checkUFNnameUnique(tWarehouse.getfName());
  547. if (StringUtils.isNotNull(tWarehouse1) && tWarehouse1.getfId() != tWarehouse.getfId()) {
  548. return UserConstants.NOT_UNIQUE;
  549. }
  550. return UserConstants.UNIQUE;
  551. }
  552. @Override
  553. public String checkUFAaddrUnique(TWarehouse tWarehouse) {
  554. TWarehouse tWarehouse1 = tWarehouseMapper.checkUFAaddrUnique(tWarehouse.getfAddr());
  555. if (StringUtils.isNotNull(tWarehouse1) && tWarehouse1.getfId() != tWarehouse.getfId()) {
  556. return UserConstants.NOT_UNIQUE;
  557. }
  558. return UserConstants.UNIQUE;
  559. }
  560. @Override
  561. public String checkUFTWarehouseAreaNoUnique(TWarehouseArea tWarehouseAreas) {
  562. TWarehouseArea tWarehouseAreas1 = tWarehouseAreaMapper.checkFNoUnique(tWarehouseAreas.getfNo(), tWarehouseAreas.getfWarehouseid());
  563. if (StringUtils.isNotNull(tWarehouseAreas1) && tWarehouseAreas1.getfId() != tWarehouseAreas.getfId()) {
  564. return UserConstants.NOT_UNIQUE;
  565. }
  566. return UserConstants.UNIQUE;
  567. }
  568. @Override
  569. public String checkUTWarehouseAreaFNnameUnique(TWarehouseArea tWarehouseAreas) {
  570. TWarehouseArea tWarehouseAreas1 = tWarehouseAreaMapper.checkUFNnameUnique(tWarehouseAreas.getfName(), tWarehouseAreas.getfWarehouseid());
  571. if (StringUtils.isNotNull(tWarehouseAreas1) && tWarehouseAreas1.getfId() != tWarehouseAreas.getfId()) {
  572. return UserConstants.NOT_UNIQUE;
  573. }
  574. return UserConstants.UNIQUE;
  575. }
  576. @Override
  577. public int selectNormalChildrenDeptById(Long fId) {
  578. return tWarehouseMapper.selectNormalChildrenDeptById(fId);
  579. }
  580. @Override
  581. public List<TreeSelect> buildDeptTreeSelect(List<TWarehouse> tWarehouses) {
  582. List<TWarehouse> deptTrees = buildDeptTree(tWarehouses);
  583. return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
  584. }
  585. /**
  586. * 构建前端所需要树结构
  587. *
  588. * @param depts 部门列表
  589. * @return 树结构列表
  590. */
  591. @Override
  592. public List<TWarehouse> buildDeptTree(List<TWarehouse> depts) {
  593. List<TWarehouse> returnList = new ArrayList<TWarehouse>();
  594. List<Long> tempList = new ArrayList<Long>();
  595. for (TWarehouse dept : depts) {
  596. tempList.add(dept.getfId());
  597. }
  598. for (Iterator<TWarehouse> iterator = depts.iterator(); iterator.hasNext(); ) {
  599. TWarehouse dept = (TWarehouse) iterator.next();
  600. // 如果是顶级节点, 遍历该父节点的所有子节点
  601. if (!tempList.contains(dept.getParentId())) {
  602. recursionFn(depts, dept);
  603. returnList.add(dept);
  604. }
  605. }
  606. if (returnList.isEmpty()) {
  607. returnList = depts;
  608. }
  609. return returnList;
  610. }
  611. @Override
  612. public String checkUFAreUnique(TWarehouse tWarehouse) {
  613. TWarehouseArea tWarehouseArea = tWarehouseAreaMapper.selectTWarehouseAreaByWarehouseId(tWarehouse.getParentId());
  614. if (StringUtils.isNotNull(tWarehouseArea)) {
  615. return UserConstants.NOT_UNIQUE;
  616. }
  617. return UserConstants.UNIQUE;
  618. }
  619. /**
  620. * 递归列表
  621. */
  622. private void recursionFn(List<TWarehouse> list, TWarehouse t) {
  623. // 得到子节点列表
  624. List<TWarehouse> childList = getChildList(list, t);
  625. t.setChildren(childList);
  626. for (TWarehouse tChild : childList) {
  627. if (hasChild(list, tChild)) {
  628. recursionFn(list, tChild);
  629. }
  630. }
  631. }
  632. /**
  633. * 得到子节点列表
  634. */
  635. private List<TWarehouse> getChildList(List<TWarehouse> list, TWarehouse t) {
  636. List<TWarehouse> tlist = new ArrayList<TWarehouse>();
  637. Iterator<TWarehouse> it = list.iterator();
  638. while (it.hasNext()) {
  639. TWarehouse n = (TWarehouse) it.next();
  640. if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getfId().longValue()) {
  641. tlist.add(n);
  642. }
  643. }
  644. return tlist;
  645. }
  646. /**
  647. * 判断是否有子节点
  648. */
  649. private boolean hasChild(List<TWarehouse> list, TWarehouse t) {
  650. return getChildList(list, t).size() > 0 ? true : false;
  651. }
  652. public String warehouseName(String ancestors, String oldName) {
  653. String str[] = ancestors.split(",");
  654. String fWarehouseInformation = "";
  655. for (String id : str) {
  656. if (!(id.equals("0")) && !(id.equals("100"))) {
  657. // 查询仓库名称
  658. TWarehouse tWarehouse = tWarehouseMapper.selectTWarehouseById(Long.valueOf(id));
  659. fWarehouseInformation += tWarehouse.getfName() + "/";
  660. }
  661. }
  662. if (StringUtils.isNull(fWarehouseInformation) && !fWarehouseInformation.equals("")) {
  663. fWarehouseInformation = oldName;
  664. } else {
  665. fWarehouseInformation += oldName;
  666. }
  667. return fWarehouseInformation;
  668. }
  669. /**
  670. * 修改仓库库容
  671. *
  672. * @param ancestors
  673. * @return
  674. */
  675. public int updateWarehousefTotalgross(String ancestors) {
  676. String str[] = ancestors.split(",");
  677. Long warehouseId = 0L;
  678. for (String id : str) {
  679. if (!(id.equals("0")) && !(id.equals("100"))) {
  680. warehouseId = Long.valueOf(id);
  681. break;
  682. }
  683. }
  684. if (warehouseId != 0) {
  685. // 所有库容
  686. BigDecimal fTotalgross = tWarehouseMapper.selectTWarehouseFTotalgross(warehouseId);
  687. TWarehouse tWarehouseNew = new TWarehouse();
  688. tWarehouseNew.setfId(warehouseId);
  689. tWarehouseNew.setfTotalgross(fTotalgross);
  690. return tWarehouseMapper.updatefTotalgross(tWarehouseNew);
  691. } else {
  692. return 0;
  693. }
  694. }
  695. private void updateParentGross(String ancestors) {
  696. String[] split = ancestors.split(",");
  697. Collections.reverse(Arrays.asList(split));
  698. for (String ancestor : split) {
  699. if ("0".equals(ancestor) || "100".equals(ancestor)) {
  700. break;
  701. }
  702. Long parentId = Long.valueOf(ancestor);
  703. List<TWarehouse> tWarehouses = tWarehouseMapper.selectChildrenDeptById(parentId);
  704. BigDecimal allGross = new BigDecimal("0");
  705. for (TWarehouse warehouse : tWarehouses) {
  706. if (StringUtils.isNotNull(warehouse.getfTotalgross())) {
  707. allGross = allGross.add(warehouse.getfTotalgross());
  708. }
  709. }
  710. if (allGross.compareTo(BigDecimal.ZERO) > 0) {
  711. TWarehouse parent = new TWarehouse();
  712. parent.setfId(parentId);
  713. parent.setfTotalgross(allGross);
  714. tWarehouseMapper.updatefTotalgross(parent);
  715. }
  716. }
  717. }
  718. }