WmspSendReceiveServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.mapper.RmsWarehouseMapper;
  3. import com.steerinfo.dil.mapper.WmspGridMaterialMapper;
  4. import com.steerinfo.dil.mapper.WmspInboundResultMapper;
  5. import com.steerinfo.dil.mapper.WmspSendReceiveMapper;
  6. import com.steerinfo.dil.model.WmspSendReceive;
  7. import com.steerinfo.dil.service.IWmspSendReceiveService;
  8. import com.steerinfo.dil.util.DataChange;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11. import java.math.BigDecimal;
  12. import java.util.Date;
  13. import java.util.HashMap;
  14. import java.util.List;
  15. import java.util.Map;
  16. /**
  17. * @author luobang
  18. * @create 2021-09-08 16:10
  19. */
  20. @Service
  21. public class WmspSendReceiveServiceImpl implements IWmspSendReceiveService {
  22. @Autowired
  23. WmspSendReceiveMapper wmspSendReceiveMapper;
  24. @Autowired
  25. RmsWarehouseMapper rmsWarehouseMapper;
  26. @Autowired
  27. WmspGridMaterialMapper wmspGridMaterialMapper;
  28. @Autowired
  29. WmspInboundResultMapper wmspInboundResultMapper;
  30. @Override
  31. public List<Map<String, Object>> getWmspSendReceiveService(Map<String, Object> mapValue) {
  32. List<Map<String, Object>> maps = wmspSendReceiveMapper.selectWmspSendReceive(mapValue);
  33. return maps;
  34. }
  35. @Override
  36. public int count() {
  37. return 0;
  38. }
  39. @Override
  40. public BigDecimal getMaterialId(BigDecimal materialSteelId) {
  41. return wmspSendReceiveMapper.getMaterialId(materialSteelId);
  42. }
  43. /* @Override
  44. //针对每一个仓库中的每一个物资类型新增一个收发层(初始化收发层)
  45. @Scheduled(cron = "0 0 0 * * ? ")
  46. public int addSendReceive() {
  47. int i=0;
  48. WmspSendReceive wmspSendReceive = new WmspSendReceive();
  49. //高线库,一棒库,二棒库,配送库
  50. List<Map<String, Object>> mapList = rmsWarehouseMapper.getWarehouseName();
  51. //遍历四个仓库
  52. for(Map<String,Object> map:mapList){
  53. BigDecimal warehouseId = DataChange.dataToBigDecimal(map.get("id"));
  54. //查询去重实时库存中的物资id
  55. List<Map<String,Object>> materialIdList = wmspGridMaterialMapper.getMaterialId(warehouseId);
  56. for(Map<String,Object> map1:materialIdList){
  57. //收发层主键自增
  58. BigDecimal sendReceiveId = wmspSendReceiveMapper.getSendReceiveId();
  59. wmspSendReceive.setSendReceiveId(sendReceiveId);
  60. //仓库id
  61. wmspSendReceive.setWarehouseId(warehouseId);
  62. //收发层日期
  63. wmspSendReceive.setSendReceiveDate(new Date());
  64. //物资id
  65. BigDecimal materialId = DataChange.dataToBigDecimal(map1.get("materialId"));
  66. wmspSendReceive.setMaterialId(materialId);
  67. //今天入库(今天生产入库+今天退货入库+今天盘盈 = 今天入库)暂只管出入库
  68. //从零点开始每入库一件就增加一件
  69. //sendReceiveThisdayInbound = wmspSendReceiveMapper.updateSendReceiveThisdayInbound(materialId);
  70. //初始化今日入库为零
  71. wmspSendReceive.setSendReceiveThisdayInbound(new BigDecimal(0));
  72. //今天出库(今天出库+今天盘亏=今天出库)
  73. //初始化出库为0
  74. wmspSendReceive.setSendReceiveThisdayOutbound(new BigDecimal(0));
  75. //昨天库存
  76. //查询昨天库存
  77. Map<String,Object> map2 = new HashMap<>();
  78. map2.put("warehouseId",warehouseId);
  79. map2.put("materialId",materialId);
  80. BigDecimal sendReceiveLastdayInventory = wmspSendReceiveMapper.getSendReceiveLastdayInventory(map2);
  81. if(sendReceiveLastdayInventory == null){
  82. wmspSendReceive.setSendReceiveLastdayInventory(new BigDecimal(0));
  83. }else{
  84. wmspSendReceive.setSendReceiveLastdayInventory(sendReceiveLastdayInventory);
  85. }
  86. //今天库存
  87. // BigDecimal sendReceiveLastdayInventory1 = wmspSendReceive.getSendReceiveLastdayInventory();
  88. // if(sendReceiveLastdayInventory1.intValue()==0 || sendReceiveLastdayInventory1 == null){
  89. // wmspSendReceive.setSendReceiveThisdayInventory(new BigDecimal(0));
  90. // }else {
  91. // addThisdayInventorySendReceive(map2);
  92. // }
  93. wmspSendReceive.setSendReceiveThisdayInventory(wmspSendReceive.getSendReceiveLastdayInventory());
  94. wmspSendReceive.setInsertUsername("admin");
  95. wmspSendReceive.setInsertTime(new Date());
  96. wmspSendReceive.setDeleted(new BigDecimal(1));
  97. i+=wmspSendReceiveMapper.insertSelective(wmspSendReceive);
  98. }
  99. }
  100. return i;
  101. }
  102. //入库的时候调用收发层
  103. //传入一个map进来warehouseId,materialId
  104. public int addInBoundSendReceive(Map<String,Object> map){
  105. //今天入库(今天生产入库+今天退货入库+今天盘盈 = 今天入库)暂只管入库
  106. return wmspSendReceiveMapper.updateSendReceiveThisdayInbound(map);
  107. }
  108. //出库的时候调用收发层
  109. public int addOutBoundSendReceive(Map<String,Object> map){
  110. //今天出库(今天出库+今天盘亏=今天出库)暂只管出库
  111. return wmspSendReceiveMapper.updateSendReceiveThisdayOutbound(map);
  112. }
  113. //计算今天库存(昨天库存 + 今天入库 — 今天出库 = 今天库存),实时变动
  114. public int addThisdayInventorySendReceive(Map<String,Object> map){
  115. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  116. BigDecimal warehouseId = DataChange.dataToBigDecimal(map.get("warehouseId"));
  117. //今天入库
  118. BigDecimal sendReceiveThisdayInbound = wmspSendReceiveMapper.selectSendReceiveThisdayInbound(map);
  119. if(sendReceiveThisdayInbound == null){
  120. sendReceiveThisdayInbound = new BigDecimal(0);
  121. }
  122. //今天出库
  123. BigDecimal sendReceiveThisdayOutbound = wmspSendReceiveMapper.selectSendReceiveThisdayOutbound(map);
  124. if(sendReceiveThisdayOutbound == null){
  125. sendReceiveThisdayOutbound = new BigDecimal(0);
  126. }
  127. // 昨天库存
  128. BigDecimal sendReceiveLastdayInventory = wmspSendReceiveMapper.getSendReceiveLastdayInventory(map);
  129. if(sendReceiveLastdayInventory == null){
  130. sendReceiveLastdayInventory=new BigDecimal(0);
  131. }
  132. //今天库存
  133. BigDecimal sendReceiveThisdayInventory = new BigDecimal(sendReceiveLastdayInventory.intValue()
  134. +sendReceiveThisdayInbound.intValue()-sendReceiveThisdayOutbound.intValue());
  135. Map<String,Object> map1 = new HashMap<>();
  136. map1.put("materialId",materialId);
  137. map1.put("warehouseId",warehouseId);
  138. map1.put("sendReceiveThisdayInventory",sendReceiveThisdayInventory);
  139. return wmspSendReceiveMapper.updateSendReceiveThisdayInventory(map1);
  140. }
  141. */
  142. //零点生成前一天的入库、出库、库存
  143. @Override
  144. public int addSendReceive(){
  145. WmspSendReceive wmspSendReceive = new WmspSendReceive();
  146. int i = 0;
  147. //高线库,一棒库,二棒库,配送库
  148. List<Map<String, Object>> mapList = rmsWarehouseMapper.getWarehouseName();
  149. //遍历四个仓库
  150. for(Map<String,Object> map:mapList){
  151. BigDecimal warehouseId = DataChange.dataToBigDecimal(map.get("id"));
  152. //查询去重实时库存中的物资id
  153. List<Map<String,Object>> materialIdList = wmspGridMaterialMapper.getMaterialId(warehouseId);
  154. for(Map<String,Object> map1:materialIdList) {
  155. //收发层主键自增
  156. BigDecimal sendReceiveId = wmspSendReceiveMapper.getSendReceiveId();
  157. wmspSendReceive.setSendReceiveId(sendReceiveId);
  158. //仓库id
  159. wmspSendReceive.setWarehouseId(warehouseId);
  160. //收发层日期
  161. wmspSendReceive.setSendReceiveDate(new Date());
  162. //物资id
  163. BigDecimal materialId = DataChange.dataToBigDecimal(map1.get("materialId"));
  164. wmspSendReceive.setMaterialId(materialId);
  165. Map<String,Object> map2 = new HashMap<>();
  166. map2.put("warehouseId",warehouseId);
  167. map2.put("materialId",materialId);
  168. //统计今天的入库总数(只统计当前仓库没有预留的数量,不统计预留库的数量)
  169. BigDecimal sendReceiveThisdayInbound = wmspSendReceiveMapper.countSndReceiveThisdayInbound(map2);
  170. wmspSendReceive.setSendReceiveThisdayInbound(sendReceiveThisdayInbound);
  171. //统计今天天的出库总数
  172. BigDecimal sendReceiveThisdayOutbound = wmspSendReceiveMapper.countSendReceiveThisdayOutbound(map2);
  173. wmspSendReceive.setSendReceiveThisdayOutbound(sendReceiveThisdayOutbound);
  174. //昨天库存
  175. BigDecimal sendReceiveLastdayInventory = wmspSendReceiveMapper.getSendReceiveLastdayInventory(map2);
  176. if(sendReceiveLastdayInventory == null){
  177. wmspSendReceive.setSendReceiveLastdayInventory(new BigDecimal(0));
  178. }else{
  179. wmspSendReceive.setSendReceiveLastdayInventory(sendReceiveLastdayInventory);
  180. }
  181. BigDecimal sendReceiveLastdayInventory1 = wmspSendReceive.getSendReceiveLastdayInventory();
  182. //今天库存
  183. BigDecimal sendReceiveThisdayInventory = new BigDecimal(sendReceiveLastdayInventory1.intValue()
  184. +sendReceiveThisdayInbound.intValue()-sendReceiveThisdayOutbound.intValue());
  185. wmspSendReceive.setSendReceiveThisdayInventory(sendReceiveThisdayInventory);
  186. wmspSendReceive.setInsertUsername("admin");
  187. wmspSendReceive.setInsertTime(new Date());
  188. wmspSendReceive.setDeleted(new BigDecimal(1));
  189. i+=wmspSendReceiveMapper.insertSelective(wmspSendReceive);
  190. }
  191. }
  192. return i;
  193. }
  194. }