WmspRestackMakeResultServiceImpl.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.mapper.*;
  3. import com.steerinfo.dil.model.*;
  4. import com.steerinfo.dil.service.IWmspRestackMakeResultService;
  5. import com.steerinfo.dil.service.IWmspRestackScanResultService;
  6. import com.steerinfo.dil.util.DataChange;
  7. import com.steerinfo.dil.model.WmspGridMaterial;
  8. import com.steerinfo.dil.util.IDUtils;
  9. import com.steerinfo.framework.mapper.IBaseMapper;
  10. import com.steerinfo.framework.service.impl.BaseServiceImpl;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import java.math.BigDecimal;
  15. import java.util.Date;
  16. import java.util.HashMap;
  17. import java.util.List;
  18. import java.util.Map;
  19. /**
  20. * WmspRestackMakeResult服务实现:
  21. * @author generator
  22. * @version 1.0-SNAPSHORT 2021-09-06 03:02
  23. * 类描述
  24. * 修订历史:
  25. * 日期:2021-09-06
  26. * 作者:generator
  27. * 参考:
  28. * 描述:WmspRestackMakeResult服务实现
  29. * @see null
  30. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  31. */
  32. @Service
  33. public class WmspRestackMakeResultServiceImpl implements IWmspRestackMakeResultService {
  34. @Autowired
  35. private WmspRestackMakeResultMapper wmspRestackMakeResultMapper;
  36. @Autowired
  37. private WmspRestackMakeMaterialMapper wmspRestackMakeMaterialMapper;
  38. @Autowired
  39. private WmspRestackScanResultMapper wmspRestackScanResultMapper;
  40. @Autowired
  41. private WmspGridMaterialMapper wmspGridMaterialMapper;
  42. @Autowired
  43. private WmspRestackScanResultServiceImpl wmspRestackScanResultService;
  44. @Autowired
  45. private WmspRestackMakeTypeResultServiceImpl wmspRestackMakeTypeResultService;
  46. @Override
  47. public List<Map<String, Object>> selectRestackMakeResultList(Map<String, Object> mapval) {
  48. return wmspRestackMakeResultMapper.selectRestackMakeResultList(mapval);
  49. }
  50. /**
  51. * 新增库管员填写倒垛单实绩
  52. * @param mapval
  53. * @return
  54. */
  55. @Override
  56. public int addMakeResult(Map<String, Object> mapval) {
  57. int i=0;
  58. //接收前端传过来的list
  59. //编写倒垛实绩
  60. Map<String,Object> map2= (Map<String, Object>) mapval.get("wmspRestackMakeResult");
  61. //获取倒垛后的垛位id
  62. Integer stackingId1 =(Integer) map2.get("stackingId1");
  63. //获取仓库id
  64. Integer warehouseid=(Integer) map2.get("warehouseid");
  65. WmspRestackMakeResult wmspRestackMakeResult=new WmspRestackMakeResult();
  66. BigDecimal makeresultid = wmspRestackMakeResultMapper.selectMaxId();
  67. wmspRestackMakeResult.setResultId(makeresultid);
  68. wmspRestackMakeResult.setResultStatus(new BigDecimal(0));
  69. wmspRestackMakeResult.setDistributionstatus(new BigDecimal(0));
  70. wmspRestackMakeResult.setResultStackNumber(DataChange.generateEightDigitsNumber("WDD",makeresultid.intValue()));
  71. wmspRestackMakeResult.setInsertUsername("admin");
  72. wmspRestackMakeResult.setInsertTime(new Date());
  73. wmspRestackMakeResult.setAfterWarehouseId(DataChange.dataToBigDecimal(warehouseid));
  74. wmspRestackMakeResult.setAfterStackingId(DataChange.dataToBigDecimal(stackingId1));
  75. wmspRestackMakeResult.setKeeperId(new BigDecimal(1));
  76. wmspRestackMakeResult.setDeleted(new BigDecimal(0));
  77. i=wmspRestackMakeResultMapper.insertSelective(wmspRestackMakeResult);
  78. List<Map<String,Object>> maplist= (List<Map<String, Object>>) mapval.get("maplist");
  79. for (Map<String,Object> map:maplist){
  80. //新增倒垛和物资中间表
  81. WmspRestackMakeMaterial wmspRestackMakeMaterial=new WmspRestackMakeMaterial();
  82. //设置主键
  83. Integer materialId =(Integer) map.get("materialId");
  84. wmspRestackMakeMaterial.setMakeMaterialId(wmspRestackMakeMaterialMapper.selectMaxId());
  85. wmspRestackMakeMaterial.setMakeResultId(wmspRestackMakeResult.getResultId());
  86. wmspRestackMakeMaterial.setMaterialId(DataChange.dataToBigDecimal(materialId));
  87. wmspRestackMakeMaterial.setMakeMaterialNumber(DataChange.dataToBigDecimal(map.get("makeMaterialNumber")));
  88. //根据仓库,垛位,层次,层序,查找仓储网格id
  89. //获取垛位已堆放物资数量
  90. int number1 = wmspRestackScanResultMapper.selectNumber(stackingId1);
  91. //计算层次
  92. int gradtionNumber2 = number1 / 24;
  93. //如果算出数据为0,则放置1号层次
  94. if (gradtionNumber2 <= 0) {
  95. gradtionNumber2 = gradtionNumber2 + 1;
  96. }
  97. //获取层序号
  98. int nu1=number1%24;
  99. //根据仓库,垛位,层次,层序,查找仓储网格id
  100. Map map1=new HashMap();
  101. map1.put("sequenceNumber",nu1);
  102. map1.put("warehouseId",warehouseid);
  103. map1.put("stackingId",stackingId1);
  104. map1.put("gradationNumber",gradtionNumber2);
  105. BigDecimal girdId1 = wmspRestackMakeResultMapper.selectGridIdByWarehouseAndSatcking(map1);
  106. //设置倒垛前仓储网格id
  107. Integer gridId =(Integer) map2.get("GridId");
  108. wmspRestackMakeMaterial.setBeforeGridId(DataChange.dataToBigDecimal(map2.get("GridId")));
  109. //根据倒垛前端的仓储网格锁定实时库存数据
  110. //根据倒垛前的物资和仓储网格进行查找实时库存主键id
  111. Integer gmId = wmspRestackScanResultService.selectGmIdByGridIdAndMaterialId(gridId, materialId);
  112. //进行实时库存的更新
  113. WmspGridMaterial wmspGridMaterial=new WmspGridMaterial();
  114. wmspGridMaterial.setGmId(new BigDecimal(gmId));
  115. wmspGridMaterial.setStatus(new BigDecimal(1));
  116. wmspGridMaterialMapper.updateByPrimaryKeySelective(wmspGridMaterial);
  117. //设置倒垛后仓储网格id
  118. wmspRestackMakeMaterial.setAfterGridId(DataChange.dataToBigDecimal(girdId1));
  119. wmspRestackMakeMaterial.setInsertTime(new Date());
  120. wmspRestackMakeMaterial.setInsertUsername("admin");
  121. i+=wmspRestackMakeMaterialMapper.insertSelective(wmspRestackMakeMaterial);
  122. }
  123. return i;
  124. }
  125. //根据主键进行更新
  126. @Override
  127. public int update(Map<String,Object> mapval) {
  128. int i=0;
  129. //接收前端传过来的list
  130. //编写倒垛实绩
  131. Map<String,Object> map2= (Map<String, Object>) mapval.get("wmspRestackMakeResult");
  132. //获取倒垛后的垛位id
  133. Integer stackingId1 =(Integer) map2.get("stackingId1");
  134. //获取仓库id
  135. Integer warehouseid=(Integer) map2.get("warehouseid");
  136. WmspRestackMakeResult wmspRestackMakeResult=new WmspRestackMakeResult();
  137. Integer resultId =(Integer) map2.get("resultId");
  138. wmspRestackMakeResult.setResultId(DataChange.dataToBigDecimal(resultId));
  139. wmspRestackMakeResult.setResultStatus(new BigDecimal(0));
  140. wmspRestackMakeResult.setAfterWarehouseId(DataChange.dataToBigDecimal(warehouseid));
  141. wmspRestackMakeResult.setAfterStackingId(DataChange.dataToBigDecimal(stackingId1));
  142. i=wmspRestackMakeResultMapper.updateByPrimaryKeySelective(wmspRestackMakeResult);
  143. List<Map<String,Object>> maplist= (List<Map<String, Object>>) mapval.get("maplist");
  144. for (Map<String,Object> map:maplist) {
  145. //新增倒垛和物资中间表
  146. WmspRestackMakeMaterial wmspRestackMakeMaterial = new WmspRestackMakeMaterial();
  147. //根据实绩id查找中间表id
  148. List<Map<String, Object>> maps = wmspRestackMakeResultMapper.selectMakeMaterialIdByResultId(resultId);
  149. for (Map<String, Object> map1 : maps) {
  150. Integer makeMaterialId =(Integer) map1.get("makeMaterialId");
  151. //设置主键
  152. wmspRestackMakeMaterial.setMakeMaterialId(DataChange.dataToBigDecimal(makeMaterialId));
  153. wmspRestackMakeMaterial.setMakeResultId(DataChange.dataToBigDecimal(resultId));
  154. wmspRestackMakeMaterial.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  155. wmspRestackMakeMaterial.setMakeMaterialNumber(DataChange.dataToBigDecimal(map.get("makeMaterialNumber")));
  156. //根据仓库,垛位,层次,层序,查找仓储网格id
  157. //获取垛位已堆放物资数量
  158. int number1 = wmspRestackScanResultMapper.selectNumber(stackingId1);
  159. //计算层次
  160. int gradtionNumber2 = number1 / 24;
  161. //如果算出数据为0,则放置1号层次
  162. if (gradtionNumber2 <= 0) {
  163. gradtionNumber2 = gradtionNumber2 + 1;
  164. }
  165. //获取层序号
  166. int nu1 = number1 % 24;
  167. //根据仓库,垛位,层次,层序,查找仓储网格id
  168. Map map4 = new HashMap();
  169. map4.put("sequenceNumber", nu1);
  170. map4.put("warehouseId", warehouseid);
  171. map4.put("stackingId", stackingId1);
  172. map4.put("gradationNumber", gradtionNumber2);
  173. BigDecimal girdId1 = wmspRestackMakeResultMapper.selectGridIdByWarehouseAndSatcking(map4);
  174. //设置倒垛前仓储网格id
  175. wmspRestackMakeMaterial.setBeforeGridId(DataChange.dataToBigDecimal(map2.get("GridId")));
  176. //设置倒垛后仓储网格id
  177. wmspRestackMakeMaterial.setAfterGridId(DataChange.dataToBigDecimal(girdId1));
  178. wmspRestackMakeMaterial.setInsertTime(new Date());
  179. wmspRestackMakeMaterial.setInsertUsername("admin");
  180. i += wmspRestackMakeMaterialMapper.updateByPrimaryKeySelective(wmspRestackMakeMaterial);
  181. }
  182. }
  183. return i;
  184. }
  185. @Override
  186. public int updateByPrimaryKeySelective(WmspRestackMakeResult wmspRestackMakeResult) {
  187. return wmspRestackMakeResultMapper.updateByPrimaryKeySelective(wmspRestackMakeResult);
  188. }
  189. //查询层次号
  190. @Override
  191. public List<Map<String, Object>> selectGardationNumber(Integer warehouseid,Integer stackingId) {
  192. return wmspRestackMakeResultMapper.selectGardationNumber(warehouseid,stackingId);
  193. }
  194. //查询垛位id
  195. @Override
  196. public List<Map<String, Object>> selectStackingId(Integer warehouseid) {
  197. return wmspRestackMakeResultMapper.selectStackingId(warehouseid);
  198. }
  199. //查询仓库名称
  200. @Override
  201. public List<Map<String, Object>> selectWarehouse() {
  202. return wmspRestackMakeResultMapper.selectWarehouse();
  203. }
  204. //获取仓库id
  205. @Override
  206. public BigDecimal getWarehouseId() {
  207. return wmspRestackMakeResultMapper.getWarehouseId();
  208. }
  209. //查询倒垛单
  210. @Override
  211. public List<Map<String, Object>> selectRestack(Map<String, Object> mapval) {
  212. return wmspRestackMakeResultMapper.selectRestack(mapval);
  213. }
  214. //根据实绩id查找倒垛后的仓库
  215. @Override
  216. public List<Map<String, Object>> selectAfterWarehouseByResultId(Integer resultId) {
  217. return wmspRestackMakeResultMapper.selectAfterWarehouseByResultId(resultId);
  218. }
  219. //根据实绩id查找倒垛后的垛位
  220. @Override
  221. public List<Map<String, Object>> selectAfterstackingByResultId(Integer resultId) {
  222. return wmspRestackMakeResultMapper.selectAfterstackingByResultId(resultId);
  223. }
  224. //根据实绩id查找物资信息
  225. @Override
  226. public List<Map<String, Object>> selectMaterialInfoByResultId(Integer resultId) {
  227. return wmspRestackMakeResultMapper.selectMaterialInfoByResultId(resultId);
  228. }
  229. @Override
  230. public List<Map<String, Object>> selectRestackByWarehouseId(Map<String, Object> map) {
  231. return wmspRestackMakeResultMapper.selectRestackByWarehouseId(map);
  232. }
  233. @Override
  234. public Integer selectGridIdByMaterialId(BigDecimal materialSteelId) {
  235. return wmspRestackMakeResultMapper.selectGridIdByMaterialId(materialSteelId);
  236. }
  237. @Override
  238. public List<Map<String, Object>> selectRestackInfoByResultId(Integer resultId) {
  239. return wmspRestackMakeResultMapper.selectRestackInfoByResultId(resultId);
  240. }
  241. @Override
  242. public List<Map<String, Object>> selectRestackForPc(Map<String, Object> map) {
  243. return wmspRestackMakeResultMapper.selectRestackForPc(map);
  244. }
  245. /**
  246. * //创建倒垛单和倒垛单类型
  247. * @param keeperId
  248. * @param resultStackNumber
  249. * @param afterStackingId
  250. * @param afterWarehouseId
  251. * @param afterBeforeStackingId
  252. * @param resultRemark
  253. * @param maps
  254. * @return
  255. */
  256. @Transactional
  257. @Override
  258. public WmspRestackMakeResult createRestackMakeResult(
  259. BigDecimal keeperId, String resultStackNumber, BigDecimal afterStackingId,
  260. BigDecimal afterWarehouseId, BigDecimal afterBeforeStackingId, String resultRemark, List<Map<String, Object>> maps) {
  261. //初始化倒垛单
  262. WmspRestackMakeResult wmspRestackMakeResult=new WmspRestackMakeResult();
  263. //获得序号
  264. BigDecimal makeresultid =IDUtils.createIDYMDHMS( wmspRestackMakeResultMapper.selectMaxId());
  265. //主键赋值
  266. wmspRestackMakeResult.setResultId(makeresultid);
  267. //倒垛单编号
  268. wmspRestackMakeResult.setResultStackNumber(resultStackNumber);
  269. //倒垛后垛位id
  270. wmspRestackMakeResult.setAfterStackingId(afterStackingId);
  271. //倒垛日期
  272. wmspRestackMakeResult.setResultMovelistTime(new Date());
  273. //库管员ID
  274. wmspRestackMakeResult.setKeeperId(keeperId);
  275. //创建人
  276. wmspRestackMakeResult.setInsertTime(new Date());
  277. wmspRestackMakeResult.setInsertUsername(keeperId.toString());
  278. //删除状态:0为未删除,1删除
  279. wmspRestackMakeResult.setDeleted(new BigDecimal(0));
  280. //下发状态
  281. wmspRestackMakeResult.setDistributionstatus(new BigDecimal(0));
  282. //倒垛后仓库id
  283. wmspRestackMakeResult.setAfterWarehouseId(afterWarehouseId);
  284. //倒垛完成状态倒垛完成状态(0:未完成;1:已完成
  285. wmspRestackMakeResult.setResultStatus(new BigDecimal((0)));
  286. //倒垛单备注
  287. wmspRestackMakeResult.setResultRemark(resultRemark);
  288. //倒垛前的垛位
  289. wmspRestackMakeResult.setAfterBeforeStackingId(afterBeforeStackingId);
  290. //首先创建倒垛类型,再创建倒垛单 makeresultid
  291. Integer totalCount= wmspRestackMakeTypeResultService.createMakeTypeList(makeresultid,maps);
  292. //添加总是
  293. wmspRestackMakeResult.setQuantity(new BigDecimal(totalCount));
  294. //添加
  295. wmspRestackMakeResultMapper.insertSelective(wmspRestackMakeResult);
  296. return wmspRestackMakeResult;
  297. }
  298. }