ItemService.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. package com.oqpo.api.service.stinfo;
  2. import com.oqpo.api.entity.CodeEntity;
  3. import com.oqpo.api.entity.oper.FileEntity;
  4. import com.oqpo.api.entity.oper.UserMngEntity;
  5. import com.oqpo.api.entity.stinfo.*;
  6. import com.oqpo.api.enums.SystemMessageCode;
  7. import com.oqpo.api.exception.GlobalException;
  8. import com.oqpo.api.mapper.FileMapper;
  9. import com.oqpo.api.mapper.oper.UserMngMapper;
  10. import com.oqpo.api.mapper.stinfo.BrandMapper;
  11. import com.oqpo.api.mapper.stinfo.ItemMapper;
  12. import com.oqpo.api.mapper.stinfo.ItemUnitMapper;
  13. import com.oqpo.api.service.CommonService;
  14. import com.oqpo.api.web.dto.request.GridRequest;
  15. import com.oqpo.api.web.dto.request.stinfo.brand.SaveBrandInfolRequest;
  16. import com.oqpo.api.web.dto.request.stinfo.item.DelItemInfolRequest;
  17. import com.oqpo.api.web.dto.request.stinfo.item.SaveItemClassMngInfolRequest;
  18. import com.oqpo.api.web.dto.request.stinfo.item.SaveItemInfolRequest;
  19. import com.oqpo.api.web.dto.response.GridResponse;
  20. import com.oqpo.api.web.dto.response.code.CodeDtlResponse;
  21. import com.oqpo.api.web.dto.response.code.CodeSearchListResponse;
  22. import com.oqpo.api.web.dto.response.stinfo.brand.AfflBrandSearchResponse;
  23. import com.oqpo.api.web.dto.response.stinfo.brand.BrandInfoResponse;
  24. import com.oqpo.api.web.dto.response.stinfo.brand.BrandSearchListResponse;
  25. import com.oqpo.api.web.dto.response.stinfo.brand.BrandSearchResponse;
  26. import com.oqpo.api.web.dto.response.stinfo.item.*;
  27. import lombok.extern.slf4j.Slf4j;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.security.crypto.password.PasswordEncoder;
  30. import org.springframework.stereotype.Service;
  31. import org.springframework.transaction.annotation.Transactional;
  32. import java.util.ArrayList;
  33. import java.util.List;
  34. import java.util.stream.Collectors;
  35. @Service
  36. @Slf4j
  37. public class ItemService extends CommonService {
  38. @Autowired
  39. private ItemMapper itemMapper;
  40. @Autowired
  41. private ItemUnitMapper itemUnitMapper;
  42. @Autowired
  43. private FileMapper fileMapper;
  44. /*
  45. 팝업 품목 리스트 조회
  46. */
  47. public GridResponse selectPopItemGridList(String sBrandId,String sStoreId, String sPodrPssblDvsn, String sItemNm, String sSpplyId, String sWhsId, String sLocation, GridRequest gridRequest) throws Exception {
  48. int gridPage = gridRequest.getGridPage();
  49. int gridSize = gridRequest.getGridSize();
  50. int gridRecords = 0 ;
  51. int gridTotal = 0;
  52. List<ItemUnitEntity> entities = new ArrayList<ItemUnitEntity>() ;
  53. if ("".equals(sStoreId)) {
  54. gridRecords = itemUnitMapper.selectPopItemBrandUnitGridCnt( sBrandId,sItemNm, sPodrPssblDvsn, sSpplyId, sWhsId, sLocation );
  55. gridTotal = fnCalculateGridTotal(gridSize, gridRecords);
  56. entities = itemUnitMapper.selectPopItemBrandUnitGridList(sBrandId, sItemNm, sPodrPssblDvsn, sSpplyId, sWhsId, sLocation, gridRequest);
  57. } else {
  58. gridRecords = itemUnitMapper.selectPopItemStoreUnitGridCnt( sBrandId,sStoreId,sItemNm, sPodrPssblDvsn );
  59. gridTotal = fnCalculateGridTotal(gridSize, gridRecords);
  60. entities = itemUnitMapper.selectPopItemStoreUnitGridList(sBrandId,sStoreId, sItemNm, sPodrPssblDvsn, gridRequest);
  61. }
  62. List<Object> gridRows = entities.stream()
  63. .map(m -> ItemPopSearchResponse.builder()
  64. .viewCd("R")
  65. .itemId(m.getItemId())
  66. .itemNm(m.getItemNm())
  67. .podrPssblDvsn(m.getPodrPssblDvsn())
  68. .podrPssblDvsnNm(m.getPodrPssblDvsnNm())
  69. .unit(m.getUnit())
  70. .unitNm(m.getUnitNm())
  71. .unitAmt(m.getUnitAmt())
  72. .stddQty(m.getStddQty())
  73. .unitGubun(m.getUnitGubun())
  74. .spplyId(m.getSpplyId())
  75. .brandUnitUnqNo(m.getBrandUnitUnqNo())
  76. .storeUnitUnqNo(m.getStoreUnitUnqNo() == null ? "" : m.getStoreUnitUnqNo())
  77. .whsPassQty(m.getWhsPassQty() == null ? 0 : m.getWhsPassQty())
  78. .build())
  79. .collect(Collectors.toList());
  80. return GridResponse.toDTO(gridPage, gridTotal, gridRecords, gridRows);
  81. }
  82. /*
  83. 품목 그리드 리스트 조회
  84. */
  85. public GridResponse selectItemGridList( String sBrandId, String sItemStCd, String sPodrPssblDvsn, String sItemType, String sItemGubun, String sClass1, String sClass2, String sClass3, String sClass4, String sItemNm, GridRequest gridRequest) throws Exception {
  86. int gridPage = gridRequest.getGridPage();
  87. int gridSize = gridRequest.getGridSize();
  88. int gridRecords = itemMapper.selectItemGridCnt( sBrandId, "", sItemStCd, sPodrPssblDvsn, sItemType, sItemGubun, sClass1, sClass2, sClass3, sClass4, sItemNm);
  89. int gridTotal = fnCalculateGridTotal(gridSize, gridRecords);
  90. List<ItemEntity> entities = itemMapper.selectItemGridList( sBrandId, "", sItemStCd, sPodrPssblDvsn, sItemType, sItemGubun, sClass1, sClass2, sClass3, sClass4, sItemNm, gridRequest);
  91. List<Object> gridRows = entities.stream()
  92. .map(m -> ItemSearchListResponse.builder()
  93. .viewCd("R")
  94. .itemId(m.getItemId())
  95. .itemNm(m.getItemNm() == null ? "" :m.getItemNm() )
  96. .itemType(m.getItemType() == null ? "" :m.getItemType() )
  97. .itemTypeNm(m.getItemTypeNm() == null ? "" :m.getItemTypeNm() )
  98. .itemClassMgntNo(m.getItemClassInfo() == null ? "" : m.getItemClassInfo().getItemClassMgntNo() == null ? "" : m.getItemClassInfo().getItemClassMgntNo())
  99. .itemClassNm(m.getItemClassMngInfo() == null ? "" : m.getItemClassMngInfo().getItemClassNm() == null ? "" : m.getItemClassMngInfo().getItemClassNm())
  100. .itemStCd(m.getItemStCd() == null ? "" :m.getItemStCd())
  101. .itemStNm(m.getItemStNm() == null ? "" :m.getItemStNm() )
  102. .podrPssblDvsn(m.getPodrPssblDvsn() == null ? "" : m.getPodrPssblDvsn())
  103. .podrPssblDvsnNm(m.getPodrPssblDvsnNm() == null ? "" :m.getPodrPssblDvsnNm())
  104. .unit(m.getUnit() == null ? "" : m.getUnit())
  105. .unitNm(m.getUnitNm() == null ? "" :m.getUnitNm() )
  106. .pchItemYn(m.getPchItemYn() == null ? "" : m.getPchItemYn())
  107. .saleItemYn(m.getSaleItemYn() == null ? "" :m.getSaleItemYn() )
  108. .build())
  109. .collect(Collectors.toList());
  110. return GridResponse.toDTO(gridPage, gridTotal, gridRecords, gridRows);
  111. }
  112. /*
  113. 품목 그리드 리스트 조회
  114. */
  115. public GridResponse selectSpplyItemGridList( String sBrandId, String sSpplyId, String sItemStCd, String sPodrPssblDvsn, String sItemNm, GridRequest gridRequest) throws Exception {
  116. int gridPage = gridRequest.getGridPage();
  117. int gridSize = gridRequest.getGridSize();
  118. int gridRecords = itemMapper.selectItemGridCnt( sBrandId,sSpplyId , sItemStCd, sPodrPssblDvsn, "", "", "", "", "", "", sItemNm);
  119. int gridTotal = fnCalculateGridTotal(gridSize, gridRecords);
  120. List<ItemEntity> entities = itemMapper.selectItemGridList( sBrandId, sSpplyId, sItemStCd, sPodrPssblDvsn, "", "", "", "", "", "", sItemNm, gridRequest);
  121. List<Object> gridRows = entities.stream()
  122. .map(m -> ItemSearchListResponse.builder()
  123. .viewCd("R")
  124. .itemId(m.getItemId())
  125. .itemNm(m.getItemNm() == null ? "" :m.getItemNm() )
  126. .itemType(m.getItemType() == null ? "" :m.getItemType() )
  127. .itemTypeNm(m.getItemTypeNm() == null ? "" :m.getItemTypeNm() )
  128. .itemClassMgntNo(m.getItemClassInfo() == null ? "" : m.getItemClassInfo().getItemClassMgntNo() == null ? "" : m.getItemClassInfo().getItemClassMgntNo())
  129. .itemClassNm(m.getItemClassMngInfo() == null ? "" : m.getItemClassMngInfo().getItemClassNm() == null ? "" : m.getItemClassMngInfo().getItemClassNm())
  130. .itemStCd(m.getItemStCd() == null ? "" :m.getItemStCd())
  131. .itemStNm(m.getItemStNm() == null ? "" :m.getItemStNm() )
  132. .podrPssblDvsn(m.getPodrPssblDvsn() == null ? "" : m.getPodrPssblDvsn())
  133. .podrPssblDvsnNm(m.getPodrPssblDvsnNm() == null ? "" :m.getPodrPssblDvsnNm())
  134. .unit(m.getUnit() == null ? "" : m.getUnit())
  135. .unitNm(m.getUnitNm() == null ? "" :m.getUnitNm() )
  136. .pchItemYn(m.getPchItemYn() == null ? "" : m.getPchItemYn())
  137. .saleItemYn(m.getSaleItemYn() == null ? "" :m.getSaleItemYn() )
  138. .build())
  139. .collect(Collectors.toList());
  140. return GridResponse.toDTO(gridPage, gridTotal, gridRecords, gridRows);
  141. }
  142. /* 품목 정보 */
  143. public ItemInfoResponse selectItemInfo(String brandId, String itemId) throws Exception {
  144. ItemEntity entity = itemMapper.selectItemInfo( brandId, itemId);
  145. List<FileEntity> fileImageInfoList = null;
  146. if (!"".equals(entity.getItemImageFileNo())) {
  147. fileImageInfoList = fileMapper.selectFileList(entity.getItemImageFileNo()) ;
  148. } else {
  149. fileImageInfoList = new ArrayList<FileEntity>();
  150. }
  151. return ItemInfoResponse.toDTO(entity,fileImageInfoList );
  152. }
  153. /* 품목 저장 */
  154. @Transactional
  155. public void saveItemInfo(String userId, SaveItemInfolRequest saveItemInfolRequest) throws Exception {
  156. try {
  157. ItemEntity entity = new ItemEntity();
  158. entity.setBrandId(saveItemInfolRequest.getBrandId());
  159. entity.setItemId(saveItemInfolRequest.getItemId());
  160. entity.setItemNm(saveItemInfolRequest.getItemNm());
  161. entity.setPchUnit(saveItemInfolRequest.getPchUnit());
  162. entity.setWeight(saveItemInfolRequest.getWeight());
  163. entity.setVolume(saveItemInfolRequest.getVolume());
  164. entity.setWidth(saveItemInfolRequest.getWidth());
  165. entity.setHeight(saveItemInfolRequest.getHeight());
  166. entity.setHigh(saveItemInfolRequest.getHigh());
  167. entity.setExpryYn(saveItemInfolRequest.getExpryYn());
  168. entity.setExpryPeriod(saveItemInfolRequest.getExpryPeriod());
  169. entity.setRtnDvsn(saveItemInfolRequest.getRtnDvsn());
  170. entity.setImpDvsn(saveItemInfolRequest.getImpDvsn());
  171. entity.setAssetInfo(saveItemInfolRequest.getAssetInfo());
  172. entity.setStckUnit(saveItemInfolRequest.getStckUnit());
  173. entity.setPodrPssblDvsn(saveItemInfolRequest.getPodrPssblDvsn());
  174. entity.setPchItemYn(saveItemInfolRequest.getPchItemYn());
  175. entity.setSaleItemYn(saveItemInfolRequest.getSaleItemYn());
  176. entity.setItemStCd(saveItemInfolRequest.getItemStCd());
  177. entity.setItemType(saveItemInfolRequest.getItemType());
  178. entity.setSaleUnit(saveItemInfolRequest.getSaleUnit());
  179. entity.setUnit(saveItemInfolRequest.getUnit());
  180. entity.setRtnPssblYn(saveItemInfolRequest.getRtnPssblYn());
  181. entity.setItemImageFileNo(saveItemInfolRequest.getItemImageFileNo());
  182. entity.setOneBoxQty(saveItemInfolRequest.getOneBoxQty());
  183. entity.setWeightUnit(saveItemInfolRequest.getWeightUnit());
  184. entity.setVolumeUnit(saveItemInfolRequest.getVolumeUnit());
  185. entity.setWidthUnit(saveItemInfolRequest.getWidthUnit());
  186. entity.setHeightUnit(saveItemInfolRequest.getHeightUnit());
  187. entity.setHighUnit(saveItemInfolRequest.getHighUnit());
  188. if ("C".equals(saveItemInfolRequest.getViewCd())) {
  189. // 품목 아이디 부여 22 entity.setContentsNo(fnGetKeyNo(17));
  190. entity.setItemId(fnGetDealNo(26,"")); // 품목아이디 생성
  191. itemMapper.insertItemInfo(userId, entity);
  192. } else if ("U".equals(saveItemInfolRequest.getViewCd())) {
  193. itemMapper.updateItemInfo(userId, entity);
  194. itemMapper.deleteItemClassInfo(entity.getItemId());
  195. }
  196. // 품목 class 정보 등록
  197. ItemClassEntity iClassEntity = new ItemClassEntity();
  198. iClassEntity.setItemId(entity.getItemId());
  199. iClassEntity.setItemNm(entity.getItemNm());
  200. // System.out.println("saveItemInfolRequestgetItemClass1==>" + saveItemInfolRequest.getItemClass1() );
  201. //System.out.println("saveItemInfolRequestgetItemClass2==>" + saveItemInfolRequest.getItemClass2() );
  202. //System.out.println("saveItemInfolRequestgetItemClass3==>" + saveItemInfolRequest.getItemClass3() );
  203. //System.out.println("saveItemInfolRequestgetItemClass4==>" + saveItemInfolRequest.getItemClass4() );
  204. iClassEntity.setItemClass1(saveItemInfolRequest.getItemClass1());
  205. iClassEntity.setItemClass2(saveItemInfolRequest.getItemClass2());
  206. iClassEntity.setItemClass3(saveItemInfolRequest.getItemClass3());
  207. iClassEntity.setItemClass4(saveItemInfolRequest.getItemClass4());
  208. //System.out.println("getItemClass1==>" + iClassEntity.getItemClass1() );
  209. //System.out.println("getItemClass2==>" + iClassEntity.getItemClass2() );
  210. //System.out.println("getItemClass3==>" + iClassEntity.getItemClass3() );
  211. // System.out.println("getItemClass4==>" + iClassEntity.getItemClass4() );
  212. ItemClassMngEntity itemClassInfo = itemMapper.selectItemClassMngNo(entity.getBrandId(), iClassEntity.getItemClass1(),iClassEntity.getItemClass2(),iClassEntity.getItemClass3(),iClassEntity.getItemClass4());
  213. iClassEntity.setItemClassMgntNo(itemClassInfo.getItemClassMgntNo());
  214. itemMapper.insertItemClassInfo(userId, iClassEntity);
  215. } catch (GlobalException e) {
  216. e.getStackTrace();
  217. throw new GlobalException(e.getSystemMessageCode());
  218. } catch (Exception e) {
  219. e.getStackTrace();
  220. throw new RuntimeException();
  221. }
  222. }
  223. //
  224. /*
  225. 품목분류 리스트 조회
  226. */
  227. public GridResponse selectItemClassMngGridList(String sBrandId, String sItemClass1, String sItemClass2, String sItemClass3, String sItemClass4, String sItemClassNm,GridRequest gridRequest) throws Exception {
  228. int gridPage = gridRequest.getGridPage();
  229. int gridSize = gridRequest.getGridSize();
  230. int gridRecords = itemMapper.selectItemClassMngGridCnt( sBrandId, sItemClass1, sItemClass2, sItemClass3, sItemClass4,sItemClassNm );
  231. int gridTotal = fnCalculateGridTotal(gridSize, gridRecords);
  232. List<ItemClassMngEntity> entities = itemMapper.selectItemClassMngGridList(sBrandId, sItemClass1, sItemClass2, sItemClass3, sItemClass4,sItemClassNm, gridRequest);
  233. List<Object> gridRows = entities.stream()
  234. .map(m -> ItemClassMngSearchResponse.builder()
  235. .viewCd("R")
  236. .brandId(m.getBrandId())
  237. .itemClassMgntNo(m.getItemClassMgntNo())
  238. .itemClassNm(m.getItemClassNm() == null ? "" : m.getItemClassNm() )
  239. .itemClass1(m.getItemClass1() == null ? "" : m.getItemClass1())
  240. .itemClass2(m.getItemClass2() == null ? "" : m.getItemClass2())
  241. .itemClass3(m.getItemClass3() == null ? "" : m.getItemClass3())
  242. .itemClass4(m.getItemClass4() == null ? "" : m.getItemClass4())
  243. .itemClass1Nm(m.getItemClass1Nm() == null ? "" : m.getItemLevel() >= 1 ? m.getItemClass1Nm() : "")
  244. .itemClass2Nm(m.getItemClass2Nm() == null ? "" : m.getItemLevel() >= 2 ? m.getItemClass2Nm() : "")
  245. .itemClass3Nm(m.getItemClass3Nm() == null ? "" : m.getItemLevel() >= 3 ? m.getItemClass3Nm() : "")
  246. .itemClass4Nm(m.getItemClass4Nm() == null ? "" : m.getItemLevel() >= 4 ? m.getItemClass4Nm() : "")
  247. .prnSeq(m.getPrnSeq() == null ? 99 : m.getPrnSeq())
  248. .build())
  249. .collect(Collectors.toList());
  250. return GridResponse.toDTO(gridPage, gridTotal, gridRecords, gridRows);
  251. }
  252. /* 품목 분류 정보 */
  253. public ItemClassMngInfoResponse selectItemClassMngInfo(String brandId, String itemClassMgnNo) throws Exception {
  254. return ItemClassMngInfoResponse.toDTO(itemMapper.selectItemClassMngInfo(brandId, itemClassMgnNo) );
  255. }
  256. /* 품목분류 저장 */
  257. @Transactional
  258. public void saveItemClassMngInfo(String userId, SaveItemClassMngInfolRequest saveItemClassMngInfolRequest) throws Exception {
  259. try {
  260. ItemClassMngEntity entity = new ItemClassMngEntity();
  261. entity.setBrandId(saveItemClassMngInfolRequest.getBrandId());
  262. entity.setItemClassNm(saveItemClassMngInfolRequest.getItemClassNm());
  263. entity.setItemClassMgntNo(saveItemClassMngInfolRequest.getItemClassMgntNo());
  264. entity.setItemClass1(saveItemClassMngInfolRequest.getItemClass1());
  265. entity.setItemClass2(saveItemClassMngInfolRequest.getItemClass2());
  266. entity.setItemClass3(saveItemClassMngInfolRequest.getItemClass3());
  267. entity.setItemClass4(saveItemClassMngInfolRequest.getItemClass4());
  268. entity.setPrnSeq(saveItemClassMngInfolRequest.getPrnSeq());
  269. if ("C".equals(saveItemClassMngInfolRequest.getViewCd())) {
  270. Integer itemLevel = 1;
  271. if ("".equals(entity.getItemClass1()))
  272. {
  273. // level 1 추가
  274. itemLevel = 1;
  275. } else {
  276. if ("".equals(entity.getItemClass2()))
  277. {
  278. // level 2 추가
  279. itemLevel = 2;
  280. } else {
  281. if ("".equals(entity.getItemClass3()))
  282. {
  283. // level 3 추가
  284. itemLevel = 3;
  285. } else {
  286. if ("".equals(entity.getItemClass4()))
  287. {
  288. // level 4 추가
  289. itemLevel = 4;
  290. } else {
  291. // 오류
  292. throw new GlobalException(SystemMessageCode.ERR_ITEMCLASS);
  293. }
  294. }
  295. }
  296. }
  297. System.out.println("=classLevel============================>" + itemLevel );
  298. entity.setItemLevel(itemLevel);
  299. int classNum = itemMapper.selectItemClassMaxClass(entity.getBrandId(), entity.getItemLevel(), entity.getItemClass1(), entity.getItemClass2(), entity.getItemClass3(), entity.getItemClass4() ) ;
  300. if (itemLevel == 1) {
  301. entity.setItemClass1(Integer.toString(classNum));
  302. } else if (itemLevel == 2) {
  303. entity.setItemClass2(Integer.toString(classNum));
  304. } else if (itemLevel == 3) {
  305. entity.setItemClass3(Integer.toString(classNum));
  306. } else if (itemLevel == 4) {
  307. entity.setItemClass4(Integer.toString(classNum));
  308. }
  309. entity.setItemClassMgntNo(fnGetKeyNo(31)); // 품목분류 아이디 부여
  310. itemMapper.insertItemClassMngInfo(userId, entity);
  311. } else if ("U".equals(saveItemClassMngInfolRequest.getViewCd())) {
  312. itemMapper.updateItemClassMngInfo(userId, entity);
  313. }
  314. } catch (GlobalException e) {
  315. e.getStackTrace();
  316. throw new GlobalException(e.getSystemMessageCode());
  317. } catch (Exception e) {
  318. e.getStackTrace();
  319. throw new RuntimeException();
  320. }
  321. }
  322. /* 품목분류 삭제 */
  323. @Transactional
  324. public void delItemClassMngInfo(String userId, String itemClassMgntNo) throws Exception {
  325. try {
  326. List<ItemClassMngEntity> icmngList = new ArrayList<ItemClassMngEntity>() ;
  327. String[] icmNoList = itemClassMgntNo.split(",");
  328. for (int i = 0 ; i < icmNoList.length ; i++) {
  329. ItemClassMngEntity delEntity = new ItemClassMngEntity();
  330. delEntity.setItemClassMgntNo(icmNoList[i]);
  331. icmngList.add(delEntity);
  332. }
  333. itemMapper.deleteItemClassMngInfo(userId, icmngList);
  334. } catch (GlobalException e) {
  335. e.getStackTrace();
  336. throw new GlobalException(e.getSystemMessageCode());
  337. } catch (Exception e) {
  338. e.getStackTrace();
  339. throw new RuntimeException();
  340. }
  341. }
  342. /* 품목 분류 level 리스트 */
  343. public ItemClassLevelResponse searchItemClassList(String sBrandId, int sItemLevel, String sItemClass1, String sItemClass2, String sItemClass3) throws Exception {
  344. List<ItemClassMngEntity> entities = itemMapper.selectItemLevelList(sBrandId, sItemLevel, sItemClass1, sItemClass2, sItemClass3 );
  345. return ItemClassLevelResponse.toDTO(entities);
  346. }
  347. }