WarehousingServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. package com.tld.service.impl;
  2. import com.github.pagehelper.PageHelper;
  3. import com.github.pagehelper.PageInfo;
  4. import com.tld.excel.ExcelUtils;
  5. import com.tld.mapper.UserMapper;
  6. import com.tld.mapper.WarehousingMapper;
  7. import com.tld.model.*;
  8. import com.tld.service.WarehousingService;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11. import org.springframework.transaction.annotation.Transactional;
  12. import javax.servlet.http.HttpServletResponse;
  13. import java.text.SimpleDateFormat;
  14. import java.util.*;
  15. @Service
  16. public class WarehousingServiceImpl implements WarehousingService {
  17. @Autowired
  18. private WarehousingMapper warehousingMapper;
  19. @Autowired
  20. private UserMapper userMapper;
  21. @Override
  22. public Map<String, Object> getRecommend(String wllbCode, String suppId, String num, String unique) {
  23. Map<String, Object> map = new HashMap<>();
  24. try{
  25. //判断如果是混合则走单独逻辑
  26. String isNotSisable = warehousingMapper.getIsNotSisable(wllbCode);
  27. if(isNotSisable.equals("1")){
  28. List<StorageLocation> list1 = warehousingMapper.getIsNotSisableLocation("1");
  29. map.put("data", list1);
  30. map.put("msg", "200");
  31. return map;
  32. }
  33. List<MaterialClass> listMaterialClass = warehousingMapper.getMaterialClass(wllbCode);
  34. if(listMaterialClass.size() == 0){
  35. listMaterialClass = warehousingMapper.getMaterialClassType(wllbCode);
  36. }
  37. StringBuffer stringBuffer = new StringBuffer();
  38. for(int i = 0; i < listMaterialClass.size(); i++){
  39. Map<String, Object> map1 = warehousingMapper.getScanNum(listMaterialClass.get(i).getStorageLocationCode(), num);
  40. if(Integer.parseInt(String.valueOf(map1.get("scanNum"))) < Integer.parseInt(String.valueOf(map1.get("storageLocationCapacity")))){
  41. stringBuffer.append(listMaterialClass.get(i).getStorageLocationCode() + ",");
  42. }
  43. }
  44. List<StorageLocation> list = warehousingMapper.recommend(stringBuffer.toString());
  45. map.put("data", list);
  46. map.put("msg", "200");
  47. } catch (Exception e){
  48. e.printStackTrace();
  49. map.put("msg", "500");
  50. map.put("errMsg", "服务器请求异常,请稍后再试");
  51. }
  52. return map;
  53. }
  54. @Override
  55. @Transactional(rollbackFor = Exception.class)
  56. public Map<String, Object> addWarehousingVirtual(WarehousingVirtual warehousingVirtual) {
  57. Map<String, Object> map = new HashMap<>();
  58. try{
  59. warehousingMapper.addWarehousingVirtual(warehousingVirtual);
  60. map.put("msg", "200");
  61. } catch (Exception e){
  62. e.printStackTrace();
  63. map.put("msg", "500");
  64. map.put("errMsg", "服务器请求异常,请稍后再试");
  65. }
  66. return map;
  67. }
  68. @Override
  69. @Transactional(rollbackFor = Exception.class)
  70. public Map<String, Object> delWarehousingVirtual(String wllbCode, String serial) {
  71. Map<String, Object> map = new HashMap<>();
  72. try{
  73. warehousingMapper.delWarehousingVirtual(wllbCode, serial);
  74. map.put("msg", "200");
  75. } catch (Exception e){
  76. e.printStackTrace();
  77. map.put("msg", "500");
  78. map.put("errMsg", "服务器请求异常,请稍后再试");
  79. }
  80. return map;
  81. }
  82. @Override
  83. public Map<String, Object> warehousing(String uniqueCode) {
  84. Map<String, Object> map = new HashMap<>();
  85. try{
  86. //入库信息
  87. List<WarehousingVirtual> list = new LinkedList<>();
  88. //查询入库所需要的信息
  89. for(WarehousingVirtual warehousingVirtual : warehousingMapper.getVirtual(uniqueCode)){
  90. //查询采购单信息
  91. List<ReceiveGoods> receiveGoods = warehousingMapper.getReceiveGoods(warehousingVirtual);
  92. //所属账套
  93. warehousingVirtual.setAccountSleeve(receiveGoods.get(0).getCompanyNumber());
  94. //WBS
  95. warehousingVirtual.setWbs(receiveGoods.get(0).getWbs());
  96. //查询部门编号
  97. List<User> listUser = userMapper.getAllUser(new User().setId(Integer.parseInt(warehousingVirtual.getUserId())));
  98. warehousingVirtual.setDepartmentId(listUser.get(0).getDepartmentId());
  99. //查询物料分类
  100. WarehousingVirtual warehousingVirtual1 = warehousingMapper.getWlClass(warehousingVirtual);
  101. warehousingVirtual.setWllbClass(warehousingVirtual1.getWllbClass());
  102. warehousingVirtual.setPart(warehousingVirtual1.getPart());
  103. list.add(warehousingVirtual);
  104. }
  105. //入库
  106. warehousingMapper.addStorage(list);//入库流水
  107. warehousingMapper.addInventory(list);//库存
  108. //返回采购单id
  109. StringBuilder stringBuilder = new StringBuilder();
  110. //入质检入库数量
  111. for(WarehousingVirtual warehousingVirtual1 : warehousingMapper.getVirtual(uniqueCode)){
  112. //查询采购单信息
  113. List<ReceiveGoods> receiveGoods = warehousingMapper.getReceiveGoods(warehousingVirtual1);
  114. for(ReceiveGoods receiveGoods1 : receiveGoods) {
  115. if(Integer.parseInt(warehousingVirtual1.getNum()) <= 0){
  116. break;
  117. }
  118. //采购单剩余入库数量
  119. int surplusNum = Integer.parseInt(receiveGoods1.getQualifiedNum()) - Integer.parseInt(receiveGoods1.getWarehousingNum());
  120. //剩余入库数量
  121. int numInto = Integer.parseInt(warehousingVirtual1.getNum()) - surplusNum;
  122. if(numInto < 0){
  123. receiveGoods1.setWarehousingNum(warehousingVirtual1.getNum());
  124. warehousingMapper.updateReceiveGood(receiveGoods1);
  125. } else {
  126. receiveGoods1.setWarehousingNum(String.valueOf(surplusNum));
  127. warehousingMapper.updateReceiveGood(receiveGoods1);
  128. //存入给gs的返回数据
  129. ReturnWarehousing returnWarehousing = new ReturnWarehousing()
  130. .setWarehousingNum(receiveGoods1.getWarehousingNum())
  131. .setGsCk(warehousingVirtual1.getGsCk())
  132. .setSourceType(receiveGoods1.getSourceType())
  133. .setMoveType(receiveGoods1.getMoveType())
  134. .setEntryNumber(receiveGoods1.getEntryNumber())
  135. .setWbs(receiveGoods1.getWbs())
  136. .setReceiveGoodsId(receiveGoods1.getId())
  137. .setMaterialId(receiveGoods1.getMaterialId())
  138. .setStorageCode(codeGenerate())
  139. .setOrderNumber(receiveGoods1.getOrderNumber());
  140. warehousingMapper.addReturnWarehousing(returnWarehousing);
  141. //判断是否有已存在的采购单号
  142. if(!stringBuilder.toString().contains(receiveGoods1.getOrderNumber() + ",")){
  143. stringBuilder.append(receiveGoods1.getOrderNumber() + ",");
  144. }
  145. }
  146. warehousingVirtual1.setNum(String.valueOf(numInto));
  147. }
  148. }
  149. warehousingMapper.delVirtual(uniqueCode);//删除临时表数据
  150. map.put("data", stringBuilder.toString());
  151. map.put("msg", "200");
  152. } catch (Exception e){
  153. e.printStackTrace();
  154. map.put("msg", "500");
  155. map.put("errMsg", "服务器请求异常,请稍后再试");
  156. }
  157. return map;
  158. }
  159. @Override
  160. public void plugOutWarehousing(String orderNumber) {
  161. try{
  162. List<ReturnWarehousing> list = warehousingMapper.getPlugOutWarehousing(orderNumber);
  163. }catch (Exception e){
  164. e.printStackTrace();
  165. }
  166. }
  167. @Override
  168. public Map<String, Object> warehousingFlowing(Storage storage) {
  169. Map<String, Object> map = new HashMap<>();
  170. try{
  171. PageHelper.startPage(storage.getPage(), storage.getLimit());
  172. PageInfo<Storage> list = new PageInfo<>(warehousingMapper.warehousingFlowing(storage));
  173. map.put("data", list);
  174. map.put("msg", "200");
  175. } catch (Exception e){
  176. e.printStackTrace();
  177. map.put("msg", "500");
  178. map.put("errMsg", "服务器请求异常,请稍后再试");
  179. }
  180. return map;
  181. }
  182. @Override
  183. public Map<String, Object> getWarehousingVirtual(String uniqueCode) {
  184. Map<String, Object> map = new HashMap<>();
  185. try{
  186. List<WarehousingVirtual> list = warehousingMapper.getWarehousingVirtual(uniqueCode);
  187. map.put("data", list);
  188. map.put("msg", "200");
  189. } catch (Exception e){
  190. e.printStackTrace();
  191. map.put("msg", "500");
  192. map.put("errMsg", "服务器请求异常,请稍后再试");
  193. }
  194. return map;
  195. }
  196. @Override
  197. public void export(Storage storage, HttpServletResponse response) {
  198. try{
  199. //导出数据汇总
  200. List<List<Object>> sheetDataList = new ArrayList<>();
  201. //表头数据
  202. List<Object> head = Arrays.asList("物料编号", "供应商名称", "连翻号", "生产日期", "生产批次", "容量", "序列号", "类型", "用户名称", "部门", "库位名称", "入库日期");
  203. //查询数据
  204. PageHelper.startPage(storage.getPage(), storage.getLimit());
  205. PageInfo<Map<String, Object>> list = new PageInfo<>(warehousingMapper.export(storage));
  206. sheetDataList.add(head);
  207. for(Map<String, Object> userMap : list.getList()){
  208. List<Object> listSheet = new ArrayList<>();
  209. for(String key: userMap.keySet()){
  210. listSheet.add(userMap.get(key));
  211. }
  212. sheetDataList.add(listSheet);
  213. }
  214. //当前时间
  215. Date time = new Date();
  216. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMddHHmmss");
  217. ExcelUtils.export(response, "入库流水数据导出" + sdf.format(time), sheetDataList);
  218. }catch (Exception e){
  219. e.printStackTrace();
  220. }
  221. }
  222. /**
  223. * 入库单生成
  224. * @return
  225. */
  226. public String codeGenerate(){
  227. StringBuilder stringBuilder = new StringBuilder("RK");
  228. Date date = new Date();
  229. SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
  230. stringBuilder.append(sdf.format(date));
  231. int count = warehousingMapper.getWarehousingCount();
  232. for(int i = 0; i < 4 - (count + "").length(); i++){
  233. stringBuilder.append("0");
  234. }
  235. return (stringBuilder.append(count)).toString();
  236. }
  237. }