WmshGridMaterialServiceImpl.java 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.mapper.WmshGridMaterialMapper;
  3. import com.steerinfo.dil.mapper.WmshInboundResultMapper;
  4. import com.steerinfo.dil.mapper.WmshOutboundResultMapper;
  5. import com.steerinfo.dil.model.WmshGridMaterial;
  6. import com.steerinfo.dil.model.WmshOutboundResult;
  7. import com.steerinfo.dil.service.IWmshGridMaterialService;
  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. * WmshGridMaterial服务实现:
  18. * @author generator
  19. * @version 1.0-SNAPSHORT 2021-10-09 07:25
  20. * 类描述
  21. * 修订历史:
  22. * 日期:2021-10-09
  23. * 作者:generator
  24. * 参考:
  25. * 描述:WmshGridMaterial服务实现
  26. * @see null
  27. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  28. */
  29. @Service(value = "wmshGridMaterialService")
  30. public class WmshGridMaterialServiceImpl implements IWmshGridMaterialService {
  31. @Autowired
  32. private WmshGridMaterialMapper wmshGridMaterialMapper;
  33. @Autowired
  34. private WmshOutboundResultMapper wmshOutboundResultMapper;
  35. @Autowired
  36. private WmshInboundResultMapper wmshInboundResultMapper;
  37. /**
  38. * 展示下游港口实时库存
  39. * @param mapVal
  40. * @return
  41. */
  42. @Override
  43. public List<Map<String, Object>> getUnloadPortStockList(Map<String, Object> mapVal) {
  44. return wmshGridMaterialMapper.getUnloadPortStockList(mapVal);
  45. }
  46. /**
  47. * 展示万州港实时库存
  48. * @param mapVal
  49. * @return
  50. */
  51. @Override
  52. public List<Map<String, Object>> getLoadPortStockList(Map<String, Object> mapVal) {
  53. return wmshGridMaterialMapper.getLoadPortStockList(mapVal);
  54. }
  55. /**
  56. * 修改实时库存
  57. * @param map
  58. * @return
  59. */
  60. @Override
  61. public int updatePortStock(Map<String,Object> map) {
  62. BigDecimal tonnage=null;
  63. BigDecimal portId = DataChange.dataToBigDecimal(map.get("portId"));
  64. BigDecimal batchId = DataChange.dataToBigDecimal(map.get("batchId"));
  65. tonnage = DataChange.dataToBigDecimal(map.get("resultMaterialNumber"));
  66. if (map.get("resultMaterialNumber")==null){
  67. tonnage =DataChange.dataToBigDecimal(map.get("resultTonnage"));
  68. }
  69. BigDecimal status = DataChange.dataToBigDecimal(map.get("status"));
  70. Map<String,Object> selectMap = new HashMap<>();
  71. selectMap.put("portId",portId);
  72. selectMap.put("batchId",batchId);
  73. //查找是否有港存库实时库存
  74. List<Map<String,Object>> wmshGridMaterials = wmshGridMaterialMapper.getGridId(map);
  75. if (wmshGridMaterials.size() == 0) {
  76. WmshGridMaterial wmshGridMaterial = new WmshGridMaterial();
  77. BigDecimal gmId = wmshGridMaterialMapper.selectMaxId();
  78. wmshGridMaterial.setGmId(gmId);
  79. wmshGridMaterial.setBatchId(batchId);
  80. wmshGridMaterial.setPortId(portId);
  81. wmshGridMaterial.setGmTonnage(tonnage);
  82. wmshGridMaterial.setDeleted(new BigDecimal(0));
  83. return wmshGridMaterialMapper.insertSelective(wmshGridMaterial);
  84. }
  85. Map<String,Object> map1 = wmshGridMaterials.get(0);
  86. BigDecimal oldGmsTonnage = DataChange.dataToBigDecimal(map1.get("gmTonnage"));
  87. BigDecimal gmId =DataChange.dataToBigDecimal(map1.get("gmId"));
  88. WmshGridMaterial wmshGridMaterial=new WmshGridMaterial();
  89. wmshGridMaterial.setGmId(gmId);
  90. BigDecimal gmsTonnage;
  91. if (status.intValue() == 0) {
  92. //gmsTonnage = new BigDecimal(oldGmsTonnage.doubleValue() - tonnage.doubleValue());
  93. gmsTonnage = oldGmsTonnage.subtract(tonnage);
  94. }
  95. else {
  96. //gmsTonnage = new BigDecimal(tonnage.doubleValue() + oldGmsTonnage.doubleValue());
  97. gmsTonnage = tonnage.add(oldGmsTonnage);
  98. }
  99. if (gmsTonnage.intValue()>=0) {
  100. wmshGridMaterial.setGmTonnage(gmsTonnage);
  101. }else {
  102. return -1;
  103. }
  104. wmshGridMaterial.setUpdateTime(new Date());
  105. int i = wmshGridMaterialMapper.updateByPrimaryKeySelective(wmshGridMaterial);
  106. return i;
  107. }
  108. @Override
  109. public int clearWmshGridMaterial(Map<String, Object> map) {
  110. int i=0;
  111. BigDecimal gmId =DataChange.dataToBigDecimal(map.get("gmId"));
  112. WmshGridMaterial wmshGridMaterial=new WmshGridMaterial();
  113. wmshGridMaterial.setGmId(gmId);
  114. wmshGridMaterial.setGmTonnage(new BigDecimal(0));
  115. i = wmshGridMaterialMapper.updateByPrimaryKeySelective(wmshGridMaterial);
  116. //实时库存
  117. String isClear =(String) map.get("isClean");
  118. WmshOutboundResult wmshOutboundResult =new WmshOutboundResult();
  119. BigDecimal id = DataChange.dataToBigDecimal(wmshGridMaterialMapper.selectMaxId());
  120. wmshOutboundResult.setResultId(id);
  121. String gckd = DataChange.generateEightDigitsNumber("GCKD", id.intValue());
  122. wmshOutboundResult.setResultNumber(gckd);
  123. wmshOutboundResult.setResultClearing(isClear);
  124. wmshOutboundResult.setInsertTime(new Date());
  125. wmshOutboundResult.setResultTonnage(DataChange.dataToBigDecimal(map.get("resultMaterialNumber")));
  126. wmshOutboundResult.setBatchId(DataChange.dataToBigDecimal(map.get("batchId")));
  127. BigDecimal portId = DataChange.dataToBigDecimal(map.get("portId"));
  128. wmshOutboundResult.setHarborId(portId);
  129. i = wmshOutboundResultMapper.insertSelective(wmshOutboundResult);
  130. return id.intValue();
  131. }
  132. //展示港存库目前品种对应的库存
  133. @Override
  134. public List<Map<String, Object>> getLoadPortStockByMaterialName(Map<String, Object> mapVal) {
  135. return wmshGridMaterialMapper.getLoadPortStockByMaterialName(mapVal);
  136. }
  137. //展示出库总吨位
  138. @Override
  139. public List<Map<String, Object>> getUnLockPortStock(Map<String, Object> mapVal) {
  140. return wmshGridMaterialMapper.getUnLockPortStock(mapVal);
  141. }
  142. @Override
  143. public int updateWmshGridMaterial(Map<String, Object> map) {
  144. BigDecimal batchId = DataChange.dataToBigDecimal(map.get("batchId"));
  145. BigDecimal userId = DataChange.dataToBigDecimal(map.get("userId"));
  146. BigDecimal gmId = DataChange.dataToBigDecimal(map.get("gmId"));
  147. //查找是否有港存库实时库存
  148. List<Map<String,Object>> wmshGridMaterials = wmshGridMaterialMapper.getGridId(map);
  149. WmshGridMaterial wmshGridMaterial=new WmshGridMaterial();
  150. if(wmshGridMaterials!=null && wmshGridMaterials.size()>0){
  151. //已经存在则加库存,将原本的港存库库存弄成0,免得同一录入批次二次使用时多加库存
  152. Map<String,Object> now = wmshGridMaterials.get(0);
  153. BigDecimal nowGmsTonnage = DataChange.dataToBigDecimal(now.get("gmTonnage"));
  154. //查询旧的批次
  155. Map<String,Object> old = new HashMap<>();
  156. old.put("portId",map.get("portId"));
  157. old.put("batchId",map.get("batchIdOld"));
  158. old=wmshGridMaterialMapper.getGridId(old).get(0);
  159. BigDecimal oldGmsTonnage = DataChange.dataToBigDecimal(old.get("gmTonnage"));
  160. //增加库存
  161. wmshGridMaterial.setGmId(DataChange.dataToBigDecimal(now.get("gmId")));
  162. wmshGridMaterial.setGmTonnage(nowGmsTonnage.add(oldGmsTonnage));
  163. wmshGridMaterial.setUpdateUsername(userId.toString());
  164. //将旧的港存库置为0
  165. WmshGridMaterial oldGrid=new WmshGridMaterial();
  166. oldGrid.setGmId(DataChange.dataToBigDecimal(old.get("gmId")));
  167. oldGrid.setGmTonnage(new BigDecimal(0));
  168. wmshGridMaterialMapper.updateByPrimaryKeySelective(oldGrid);
  169. }else{
  170. //不存在修改批次
  171. wmshGridMaterial.setGmId(gmId);
  172. wmshGridMaterial.setBatchId(batchId);
  173. wmshGridMaterial.setUpdateUsername(userId.toString());
  174. }
  175. //修改入库和出库实绩绑定的批次
  176. wmshInboundResultMapper.updateForBind(map);
  177. wmshOutboundResultMapper.updateForBind(map);
  178. return wmshGridMaterialMapper.updateByPrimaryKeySelective(wmshGridMaterial);
  179. }
  180. }