WmspSendReceiveServiceImpl.java 11 KB

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