WmspInboundDistributeServiceImpl.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.mapper.WmspInboundDistributeMapper;
  3. import com.steerinfo.dil.model.WmspInboundDistribute;
  4. import com.steerinfo.dil.service.IWmspInboundDistributeService;
  5. import com.steerinfo.dil.util.IDUtils;
  6. import com.steerinfo.framework.mapper.IBaseMapper;
  7. import com.steerinfo.framework.service.impl.BaseServiceImpl;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Service;
  10. import java.math.BigDecimal;
  11. import java.util.*;
  12. /**
  13. * WmspInboundDistribute服务实现:
  14. * @author generator
  15. * @version 1.0-SNAPSHORT 2022-01-10 02:48
  16. * 类描述
  17. * 修订历史:
  18. * 日期:2022-01-10
  19. * 作者:generator
  20. * 参考:
  21. * 描述:WmspInboundDistribute服务实现
  22. * @see null
  23. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  24. */
  25. @Service(value = "wmspInboundDistributeService")
  26. public class WmspInboundDistributeServiceImpl extends BaseServiceImpl<WmspInboundDistribute, Short> implements IWmspInboundDistributeService {
  27. @Autowired
  28. private WmspInboundDistributeMapper wmspInboundDistributeMapper;
  29. @Autowired
  30. private CommonServiceImpl commonService;
  31. @Autowired
  32. private WmspInboundDistributeServiceImpl wmspInboundDistributeService;
  33. @Override
  34. protected IBaseMapper<WmspInboundDistribute, Short> getMapper() {
  35. return wmspInboundDistributeMapper;
  36. }
  37. @Override
  38. public WmspInboundDistribute initAndCreateInboundDistribute(BigDecimal personnelWorkshopid,BigDecimal groupId, String userName, int batch) {
  39. //一、创建一个批次信息
  40. WmspInboundDistribute wmspInboundDistribute=new WmspInboundDistribute();
  41. //初始化下发批次信息
  42. //主键
  43. wmspInboundDistribute.setDistributeId(IDUtils.createIDYMDHMS(commonService.getSeqCount("seq_WMSP_INBOUND_DISTRIBUTE")));
  44. //分组
  45. wmspInboundDistribute.setInboundGroupId(groupId);
  46. //入库状态 1、下发中、2、已完成、3、已接受、4、已结束
  47. //如果两个都已经下发改变状态为已下发、只有一个下发改变状态为下发中
  48. //2、并且当前改变当前用户的,未下发状态为已经下发(给扫码实绩赋值入库实绩id)
  49. wmspInboundDistribute.setResultStatus(new BigDecimal(1));
  50. //当前用户批次
  51. wmspInboundDistribute.setBatch(new BigDecimal(batch));
  52. //行车工 没有接收是没有这个字段的
  53. //wmspInboundDistribute.setDistributeId();
  54. //创建用户
  55. wmspInboundDistribute.setInsertUsername(userName);
  56. //创建时间
  57. wmspInboundDistribute.setInsertTime(new Date());
  58. //仓库
  59. wmspInboundDistribute.setPersonnelWorkshopid(personnelWorkshopid);
  60. //插入数据库
  61. int status = wmspInboundDistributeMapper.insertSelective(wmspInboundDistribute);
  62. return status>0?wmspInboundDistribute:null;
  63. }
  64. @Override
  65. public List<Map<String,Object>> getNewDistribute(Integer personnelWorkshopid) {
  66. List<Map<String,Object>> result= wmspInboundDistributeMapper.getNewDistribute(personnelWorkshopid);
  67. return wmspInboundDistributeService.getInboundList(result);
  68. }
  69. /**
  70. * 改变状态,添加行车工信息
  71. * @param mapValue
  72. * @return
  73. */
  74. @Override
  75. public synchronized Integer grabDistribute(Map<String, Object> mapValue) {
  76. //判断这一批是否被其他人抢了
  77. Integer status= wmspInboundDistributeMapper.getDistributeStatus(mapValue.get("distributeId"));
  78. //如果没有被抢就设置位当前用户得单
  79. if (status==2){
  80. return wmspInboundDistributeMapper.grabDistribute(mapValue);
  81. }
  82. return 0;
  83. }
  84. // 根据获取到的带吊装list进行处理
  85. @Override
  86. public List<Map<String, Object>> getInboundList(List<Map<String, Object>> result) {
  87. // 创建set集合用来存储唯一的number
  88. HashSet<String> set =new HashSet<>();
  89. List<Map<String ,Object>> result1=new ArrayList<>();
  90. // 遍历result
  91. for(Map<String ,Object> map:result){
  92. // 判断number是否取值为空
  93. if (map.get("gridSequenceNumber")!=null) {
  94. // 取出map中的number值
  95. // 层序号
  96. BigDecimal gridSequenceNumber = (BigDecimal) map.get("gridSequenceNumber");
  97. // 月台Id
  98. BigDecimal platformId = (BigDecimal)map.get("platformId");
  99. // 层次号
  100. BigDecimal gridGradationNumber = (BigDecimal)map.get("gridGradationNumber");
  101. // 仓库Id
  102. String warehouseId = map.get("warehouseId").toString();
  103. // 垛位Id
  104. BigDecimal stackingId = (BigDecimal)map.get("stackingId");
  105. // 拼接物资的存储位置
  106. String number = warehouseId.toString()+platformId.toString()+stackingId.toString()+gridSequenceNumber.toString()+gridGradationNumber.toString();
  107. // 判断这个number值在set集合中是否已经存在,如果不存在则进行存储
  108. System.out.println(number);
  109. if (!set.contains(number)){
  110. set.add(number);
  111. result1.add(map);
  112. }
  113. }else {
  114. // 月台Id
  115. BigDecimal platformId = (BigDecimal)map.get("platformId");
  116. // 仓库Id
  117. String warehouseId = map.get("warehouseId").toString();
  118. // 垛位Id
  119. BigDecimal resultNumber = (BigDecimal)map.get("resultNumber");
  120. // 拼接物资的存储位置
  121. String number = warehouseId.toString()+platformId.toString()+resultNumber.toString();
  122. // 判断这个number值在set集合中是否已经存在,如果不存在则进行存储
  123. System.out.println(number);
  124. if (!set.contains(number)){
  125. set.add(number);
  126. result1.add(map);
  127. }
  128. }
  129. }
  130. // 遍历list集合,对数据按照resultNumber从小到大排序
  131. // 方法1:
  132. // 遍历result1,获取关于resultNumber正确排序的集合
  133. int [] array =new int[result1.size()];
  134. int i=0;
  135. for (Map<String ,Object> map:result1){
  136. Integer num = Integer.valueOf(map.get("resultNumber").toString());
  137. array[i] = num;
  138. i++;
  139. }
  140. // 对list排序
  141. Arrays.sort(array);
  142. // 根据排序好的array数组进行对list的重新排序
  143. List<Map<String ,Object>> result2=new ArrayList<>();
  144. // 遍历result1和遍历数组
  145. for(int j=0;j<array.length;j++){
  146. for (Map<String ,Object> map:result1){
  147. int a = Integer.valueOf(map.get("resultNumber").toString());
  148. if (array[j]==a){
  149. result2.add(map);
  150. }
  151. }
  152. }
  153. // 返回过滤之后的list
  154. return result2;
  155. }
  156. @Override
  157. public int updateDistributeStatus(String distributeId) {
  158. return wmspInboundDistributeMapper.updateDistributeStatus(distributeId);
  159. }
  160. }