WmshGridMaterialServiceImpl.java 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  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 org.springframework.transaction.annotation.Transactional;
  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. * WmshGridMaterial服务实现:
  19. * @author generator
  20. * @version 1.0-SNAPSHORT 2021-10-09 07:25
  21. * 类描述
  22. * 修订历史:
  23. * 日期:2021-10-09
  24. * 作者:generator
  25. * 参考:
  26. * 描述:WmshGridMaterial服务实现
  27. * @see null
  28. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  29. */
  30. @Service(value = "wmshGridMaterialService")
  31. public class WmshGridMaterialServiceImpl implements IWmshGridMaterialService {
  32. @Autowired
  33. private WmshGridMaterialMapper wmshGridMaterialMapper;
  34. @Autowired
  35. private WmshOutboundResultMapper wmshOutboundResultMapper;
  36. @Autowired
  37. private WmshInboundResultMapper wmshInboundResultMapper;
  38. /**
  39. * 展示下游港口实时库存
  40. * @param mapVal
  41. * @return
  42. */
  43. @Override
  44. public List<Map<String, Object>> getUnloadPortStockList(Map<String, Object> mapVal) {
  45. return wmshGridMaterialMapper.getUnloadPortStockList(mapVal);
  46. }
  47. /**
  48. * 展示万州港实时库存
  49. * @param mapVal
  50. * @return
  51. */
  52. @Override
  53. public List<Map<String, Object>> getLoadPortStockList(Map<String, Object> mapVal) {
  54. return wmshGridMaterialMapper.getLoadPortStockList(mapVal);
  55. }
  56. @Override
  57. public List<Map<String, Object>> getDownPortStockList(Map<String, Object> mapVal) {
  58. return wmshGridMaterialMapper.getDownPortStockList(mapVal);
  59. }
  60. @Override
  61. public List<Map<String, Object>> getRunStockList(Map<String, Object> mapVal) {
  62. return wmshGridMaterialMapper.getRunStockList(mapVal);
  63. }
  64. /**
  65. * 修改实时库存
  66. * @param map
  67. * @return
  68. */
  69. @Override
  70. public int updatePortStock(Map<String,Object> map) {
  71. BigDecimal tonnage=null;
  72. BigDecimal portId = DataChange.dataToBigDecimal(map.get("portId"));
  73. BigDecimal batchId = DataChange.dataToBigDecimal(map.get("batchId"));
  74. tonnage = DataChange.dataToBigDecimal(map.get("resultMaterialNumber"));
  75. if (map.get("resultMaterialNumber")==null){
  76. tonnage =DataChange.dataToBigDecimal(map.get("resultTonnage"));
  77. }
  78. BigDecimal status = DataChange.dataToBigDecimal(map.get("status"));
  79. Map<String,Object> selectMap = new HashMap<>();
  80. selectMap.put("portId",portId);
  81. selectMap.put("batchId",batchId);
  82. //查找是否有港存库实时库存
  83. List<Map<String,Object>> wmshGridMaterials = wmshGridMaterialMapper.getGridId(map);
  84. if (wmshGridMaterials.size() == 0) {
  85. WmshGridMaterial wmshGridMaterial = new WmshGridMaterial();
  86. BigDecimal gmId = wmshGridMaterialMapper.selectMaxId();
  87. wmshGridMaterial.setGmId(gmId);
  88. wmshGridMaterial.setBatchId(batchId);
  89. wmshGridMaterial.setPortId(portId);
  90. wmshGridMaterial.setGmTonnage(tonnage);
  91. wmshGridMaterial.setDeleted(new BigDecimal(0));
  92. return wmshGridMaterialMapper.insertSelective(wmshGridMaterial);
  93. }
  94. Map<String,Object> map1 = wmshGridMaterials.get(0);
  95. BigDecimal oldGmsTonnage = DataChange.dataToBigDecimal(map1.get("gmTonnage"));
  96. BigDecimal gmId =DataChange.dataToBigDecimal(map1.get("gmId"));
  97. WmshGridMaterial wmshGridMaterial=new WmshGridMaterial();
  98. wmshGridMaterial.setGmId(gmId);
  99. BigDecimal gmsTonnage;
  100. if (status.intValue() == 0) {
  101. //gmsTonnage = new BigDecimal(oldGmsTonnage.doubleValue() - tonnage.doubleValue());
  102. gmsTonnage = oldGmsTonnage.subtract(tonnage);
  103. }
  104. else {
  105. //gmsTonnage = new BigDecimal(tonnage.doubleValue() + oldGmsTonnage.doubleValue());
  106. gmsTonnage = tonnage.add(oldGmsTonnage);
  107. }
  108. if (gmsTonnage.intValue()>=0) {
  109. wmshGridMaterial.setGmTonnage(gmsTonnage);
  110. }else {
  111. return -1;
  112. }
  113. wmshGridMaterial.setUpdateTime(new Date());
  114. int i = wmshGridMaterialMapper.updateByPrimaryKeySelective(wmshGridMaterial);
  115. return i;
  116. }
  117. @Override
  118. @Transactional(rollbackFor = Exception.class)
  119. public int clearWmshGridMaterial(Map<String, Object> map) {
  120. int i=0;
  121. BigDecimal gmId =DataChange.dataToBigDecimal(map.get("gmId"));
  122. WmshGridMaterial wmshGridMaterial=wmshGridMaterialMapper.selectByPrimaryKey(gmId);
  123. BigDecimal surplus=wmshGridMaterial.getGmTonnage();
  124. wmshGridMaterial.setGmTonnage(new BigDecimal(0));
  125. i = wmshGridMaterialMapper.updateByPrimaryKeySelective(wmshGridMaterial);
  126. //实时库存
  127. String isClear =(String) map.get("isClean");
  128. WmshOutboundResult wmshOutboundResult =new WmshOutboundResult();
  129. BigDecimal id = DataChange.dataToBigDecimal(wmshGridMaterialMapper.selectMaxId());
  130. wmshOutboundResult.setResultId(id);
  131. String gckd = DataChange.generateEightDigitsNumber("GCKD", id.intValue());
  132. wmshOutboundResult.setResultNumber(gckd);
  133. wmshOutboundResult.setResultClearing(isClear);
  134. wmshOutboundResult.setInsertTime(new Date());
  135. wmshOutboundResult.setResultTonnage(surplus);
  136. wmshOutboundResult.setBatchId(DataChange.dataToBigDecimal(map.get("batchId")));
  137. BigDecimal portId = DataChange.dataToBigDecimal(map.get("portId"));
  138. wmshOutboundResult.setHarborId(portId);
  139. //并按照装船时间作为下游港口出库作业时间
  140. if (map.get("resultLoadShipDate") != null) {
  141. long resultLoadShipDate =(long) map.get("resultLoadShipDate");
  142. wmshOutboundResult.setWorkTime(new Date(resultLoadShipDate));
  143. }
  144. //按照出库时间作为万州港出库作业时间
  145. if (map.get("resultLoadingDate") != null) {
  146. long resultLoadingDate =(long) map.get("resultLoadingDate");
  147. wmshOutboundResult.setWorkTime(new Date(resultLoadingDate));
  148. }
  149. i = wmshOutboundResultMapper.insertSelective(wmshOutboundResult);
  150. return id.intValue();
  151. }
  152. //展示港存库目前品种对应的库存
  153. @Override
  154. public List<Map<String, Object>> getLoadPortStockByMaterialName(Map<String, Object> mapVal) {
  155. return wmshGridMaterialMapper.getLoadPortStockByMaterialName(mapVal);
  156. }
  157. //展示出库总吨位
  158. @Override
  159. public List<Map<String, Object>> getUnLockPortStock(Map<String, Object> mapVal) {
  160. return wmshGridMaterialMapper.getUnLockPortStock(mapVal);
  161. }
  162. @Override
  163. @Transactional(rollbackFor = Exception.class)
  164. public int updateWmshGridMaterial(Map<String, Object> map) {
  165. BigDecimal batchId = DataChange.dataToBigDecimal(map.get("batchId"));
  166. String userId = map.get("userId")+"";
  167. //查询旧的批次所有的港存库
  168. Map<String,Object> batchIdOld = new HashMap<>();
  169. batchIdOld.put("batchId",map.get("batchIdOld"));
  170. List<Map<String,Object>> oldGrids = wmshGridMaterialMapper.getAllGridOfBatch(batchIdOld);
  171. for(Map<String,Object> oldGrid:oldGrids){
  172. WmshGridMaterial wmshGridMaterial=new WmshGridMaterial();
  173. BigDecimal gmId = DataChange.dataToBigDecimal(oldGrid.get("gmId"));
  174. BigDecimal oldGmsTonnage = DataChange.dataToBigDecimal(oldGrid.get("gmTonnage"));
  175. BigDecimal portId =DataChange.dataToBigDecimal(oldGrid.get("portId"));
  176. Map<String,Object> temp=new HashMap<>();
  177. temp.put("batchId",batchId);
  178. temp.put("portId",portId);
  179. //查询对应的新批次港存库
  180. List<Map<String,Object>> nowGrids=wmshGridMaterialMapper.getGridId(temp);
  181. if(nowGrids!=null && nowGrids.size()>0){
  182. Map<String,Object> nowGrid=nowGrids.get(0);
  183. BigDecimal nowGmsTonnage = DataChange.dataToBigDecimal(nowGrid.get("gmTonnage"));
  184. //增加库存
  185. wmshGridMaterial.setGmId(DataChange.dataToBigDecimal(nowGrid.get("gmId")));
  186. wmshGridMaterial.setGmTonnage(nowGmsTonnage.add(oldGmsTonnage));
  187. wmshGridMaterial.setUpdateUsername(userId);
  188. //将旧的港存库置为0
  189. WmshGridMaterial oldGridMaterial=new WmshGridMaterial();
  190. oldGridMaterial.setGmId(DataChange.dataToBigDecimal(oldGrid.get("gmId")));
  191. oldGridMaterial.setGmTonnage(new BigDecimal(0));
  192. oldGridMaterial.setUpdateUsername(userId);
  193. oldGridMaterial.setDeleted(new BigDecimal(1));
  194. wmshGridMaterialMapper.updateByPrimaryKeySelective(oldGridMaterial);
  195. }else{
  196. //如果没有新批次的港存库,就直接修改当前港存库批次为该港存库
  197. wmshGridMaterial.setGmId(gmId);
  198. wmshGridMaterial.setBatchId(batchId);
  199. wmshGridMaterial.setUpdateUsername(userId);
  200. }
  201. wmshGridMaterialMapper.updateByPrimaryKeySelective(wmshGridMaterial);
  202. }
  203. //修改入库和出库实绩绑定的批次
  204. wmshInboundResultMapper.updateForBind(map);
  205. wmshOutboundResultMapper.updateForBind(map);
  206. return 1;
  207. }
  208. }