WmspInventoryCloseServiceImpl.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.mapper.RmsWarehouseMapper;
  3. import com.steerinfo.dil.mapper.WmspInventoryCloseMapper;
  4. import com.steerinfo.dil.model.WmspInventoryClose;
  5. import com.steerinfo.dil.service.IWmspInventoryCloseService;
  6. import com.steerinfo.dil.util.DataChange;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.scheduling.annotation.Async;
  9. import org.springframework.scheduling.annotation.Scheduled;
  10. import org.springframework.stereotype.Service;
  11. import java.math.BigDecimal;
  12. import java.util.Date;
  13. import java.util.List;
  14. import java.util.Map;
  15. /**
  16. * @author luobang
  17. * @create 2021-09-08 14:42
  18. */
  19. @Service
  20. public class WmspInventoryCloseServiceImpl implements IWmspInventoryCloseService {
  21. @Autowired
  22. WmspInventoryCloseMapper wmspInventoryCloseMapper;
  23. @Autowired
  24. RmsWarehouseMapper rmsWarehouseMapper;
  25. @Override
  26. public List<Map<String, Object>> getWmspInventoryClose(Map<String, Object> mapValue) {
  27. List<Map<String, Object>> maps = wmspInventoryCloseMapper.selectWmspInventoryClose(mapValue);
  28. return maps;
  29. }
  30. @Override
  31. @Scheduled(cron = "1 45 23 * * ? ")
  32. @Async("threadPoolTaskExecutor")
  33. public int addInventoryClose() {
  34. int i = 0;
  35. // int count = wmspInventoryCloseMapper.getClose();
  36. // if(count == 0){
  37. //高线库,一棒库,二棒库,配送库
  38. List<Map<String, Object>> mapList = rmsWarehouseMapper.getWarehouseName();
  39. //遍历四个仓库
  40. for(Map<String,Object> map:mapList) {
  41. BigDecimal warehouseId = DataChange.dataToBigDecimal(map.get("id"));
  42. //先获取收发存中的物资
  43. List<Map<String,Object>> materialList = wmspInventoryCloseMapper.selectSendReceive(warehouseId);
  44. for(Map<String,Object> map1:materialList){
  45. WmspInventoryClose wmspInventoryClose = new WmspInventoryClose();
  46. //主键自增
  47. BigDecimal inventoryCloseId = wmspInventoryCloseMapper.addInventoryCloseId();
  48. wmspInventoryClose.setCloseId(inventoryCloseId);
  49. //增加仓库id
  50. wmspInventoryClose.setWarehouseId(warehouseId);
  51. //增加物资id
  52. BigDecimal materialId = DataChange.dataToBigDecimal(map1.get("materialId"));
  53. wmspInventoryClose.setMaterialId(materialId);
  54. //获取一个仓库中的一种物资一个月之内的入库数据
  55. BigDecimal closeThismonthInbound = wmspInventoryCloseMapper.selectCloseThismonthInbound(warehouseId,materialId);
  56. if(closeThismonthInbound == null){
  57. wmspInventoryClose.setCloseThismonthInbound(new BigDecimal(0));
  58. }else {
  59. wmspInventoryClose.setCloseThismonthInbound(closeThismonthInbound);
  60. }
  61. BigDecimal closeThismonthInbound1 = wmspInventoryClose.getCloseThismonthInbound();
  62. //获取一个仓库的一种物资一个月之内的出库数据
  63. BigDecimal closeThismonthOutbound = wmspInventoryCloseMapper.selectCloseThismonthOutbound(warehouseId,materialId);
  64. if(closeThismonthOutbound == null){
  65. wmspInventoryClose.setCloseThismonthOutbound(new BigDecimal(0));
  66. }else {
  67. wmspInventoryClose.setCloseThismonthOutbound(closeThismonthOutbound);
  68. }
  69. BigDecimal closeThismonthOutbound1 = wmspInventoryClose.getCloseThismonthOutbound();
  70. //获取上一个月的一种物资的库存数据
  71. BigDecimal closeLastmonthInventory = wmspInventoryCloseMapper.selectCloseLastmonthInventory(warehouseId,materialId);
  72. if(closeLastmonthInventory==null){
  73. wmspInventoryClose.setCloseLastmonthInventory(new BigDecimal(0));
  74. }else {
  75. wmspInventoryClose.setCloseLastmonthInventory(closeLastmonthInventory);
  76. }
  77. //获取一个仓库的一种物资一个月之内的总库存数据
  78. BigDecimal closeLastmonthInventory1 = wmspInventoryClose.getCloseLastmonthInventory();
  79. BigDecimal closeThismonthInventory =
  80. new BigDecimal(closeThismonthInbound1.intValue() - closeThismonthOutbound1.intValue() + closeLastmonthInventory1.intValue());
  81. wmspInventoryClose.setCloseThismonthInventory(closeThismonthInventory);
  82. wmspInventoryClose.setInsertTime(new Date());
  83. wmspInventoryClose.setInsertUsername("admin");
  84. wmspInventoryClose.setDeleted(new BigDecimal(1));
  85. i+=wmspInventoryCloseMapper.insertSelective(wmspInventoryClose);
  86. }
  87. }
  88. //}
  89. return i;
  90. }
  91. @Override
  92. public int getClose() {
  93. return wmspInventoryCloseMapper.getClose();
  94. }
  95. }