ItemUnitService.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488
  1. package com.oqpo.api.service.stinfo;
  2. import com.oqpo.api.client.oqlink.OqlinkClient;
  3. import com.oqpo.api.client.oqlink.dto.OqScmMenuModel;
  4. import com.oqpo.api.client.oqlink.dto.OqScmStorePriceChangeReqModel;
  5. import com.oqpo.api.client.oqlink.dto.OqScmStorePriceChangeResModel;
  6. import com.oqpo.api.client.oqlink.util.HmacUtil;
  7. import com.oqpo.api.entity.CodeEntity;
  8. import com.oqpo.api.entity.oper.FileEntity;
  9. import com.oqpo.api.entity.oper.UserMngEntity;
  10. import com.oqpo.api.entity.stinfo.*;
  11. import com.oqpo.api.enums.SystemMessageCode;
  12. import com.oqpo.api.exception.GlobalException;
  13. import com.oqpo.api.mapper.FileMapper;
  14. import com.oqpo.api.mapper.oper.UserMngMapper;
  15. import com.oqpo.api.mapper.stinfo.ItemMapper;
  16. import com.oqpo.api.mapper.stinfo.ItemUnitMapper;
  17. import com.oqpo.api.mapper.stinfo.StoreBaseInfoMapper;
  18. import com.oqpo.api.mapper.stinfo.StoreItemUnitMapper;
  19. import com.oqpo.api.service.CommonService;
  20. import com.oqpo.api.util.StringUtil;
  21. import com.oqpo.api.web.dto.request.GridRequest;
  22. import com.oqpo.api.web.dto.request.stinfo.item.DelItemInfolRequest;
  23. import com.oqpo.api.web.dto.request.stinfo.item.SaveItemClassMngInfolRequest;
  24. import com.oqpo.api.web.dto.request.stinfo.item.SaveItemInfolRequest;
  25. import com.oqpo.api.web.dto.request.stinfo.itemUnit.SaveItemUnitInfolRequest;
  26. import com.oqpo.api.web.dto.request.stinfo.itemUnit.SaveStoreItemUnitInfolRequest;
  27. import com.oqpo.api.web.dto.request.stinfo.itemUnit.StoreItemUnitInfolRequest;
  28. import com.oqpo.api.web.dto.response.GridResponse;
  29. import com.oqpo.api.web.dto.response.code.CodeSearchListResponse;
  30. import com.oqpo.api.web.dto.response.stinfo.item.*;
  31. import com.oqpo.api.web.dto.response.stinfo.itemUnit.ItemUnitInfoResponse;
  32. import com.oqpo.api.web.dto.response.stinfo.itemUnit.ItemUnitSearchResponse;
  33. import com.oqpo.api.web.dto.response.stinfo.itemUnit.StoreItemUnitInfoResponse;
  34. import com.oqpo.api.web.dto.response.stinfo.itemUnit.StoreItemUnitSearchResponse;
  35. import lombok.extern.slf4j.Slf4j;
  36. import org.springframework.beans.factory.annotation.Autowired;
  37. import org.springframework.stereotype.Service;
  38. import org.springframework.transaction.annotation.Transactional;
  39. import java.lang.reflect.GenericDeclaration;
  40. import java.text.SimpleDateFormat;
  41. import java.util.ArrayList;
  42. import java.util.Date;
  43. import java.util.List;
  44. import java.util.stream.Collectors;
  45. @Service
  46. @Slf4j
  47. public class ItemUnitService extends CommonService {
  48. @Autowired
  49. private ItemUnitMapper itemUnitMapper;
  50. @Autowired
  51. private ItemMapper itemMapper;
  52. @Autowired
  53. private StoreItemUnitMapper storeItemUnitMapper;
  54. @Autowired
  55. private StoreBaseInfoMapper storeBaseInfoMapper;
  56. @Autowired
  57. private FileMapper fileMapper;
  58. @Autowired
  59. private UserMngMapper userMngMapper;
  60. @Autowired
  61. private OqlinkClient oqlinkClient;
  62. /*
  63. 브랜드 공급사 단가 리스트 조회
  64. */
  65. public GridResponse selectItemUnitGridList(String sBrandId, String fromDt, String toDt, String sUnitStCd, String sSpplyId, String sClass1, String sClass2, String sClass3, String sClass4, String sItemNm, GridRequest gridRequest) throws Exception {
  66. int gridPage = gridRequest.getGridPage();
  67. int gridSize = gridRequest.getGridSize();
  68. fromDt = fromDt == null ? null : fromDt.replace(".", "");
  69. toDt = toDt == null ? null : toDt.replace(".", "");
  70. int gridRecords = itemUnitMapper.selectItemUnitGridCnt(sBrandId, fromDt, toDt, sUnitStCd, sSpplyId, sClass1, sClass2, sClass3, sClass4, sItemNm);
  71. int gridTotal = fnCalculateGridTotal(gridSize, gridRecords);
  72. List<ItemUnitEntity> entities = itemUnitMapper.selectItemUnitGridList(sBrandId, fromDt, toDt, sUnitStCd, sSpplyId, sClass1, sClass2, sClass3, sClass4, sItemNm, gridRequest);
  73. List<Object> gridRows = entities.stream()
  74. .map(m -> ItemUnitSearchResponse.builder()
  75. .viewCd("R")
  76. .brandUnitUnqNo(m.getBrandUnitUnqNo())
  77. .brandId(m.getBrandId())
  78. .itemId(m.getItemId())
  79. .itemNm(m.getItemNm())
  80. .spplyId(m.getSpplyId())
  81. .spplyNm(m.getSpplyNm())
  82. .contSttDt(m.getContSttDt() == null ? "" : m.getContSttDt())
  83. .contEndDt(m.getContEndDt() == null ? "" : m.getContEndDt())
  84. .curr(m.getCurr() == null ? "" : m.getCurr())
  85. .currNm(m.getCurrNm() == null ? "" : m.getCurrNm())
  86. .unit(m.getUnit() == null ? "" : m.getUnit())
  87. .unitNm(m.getUnitNm() == null ? "" : m.getUnitNm())
  88. .unitAmt(m.getUnitAmt() == null ? 0 : m.getUnitAmt())
  89. .leadTime(m.getLeadTime() == null ? 0 : m.getLeadTime())
  90. .spplyItemId(m.getSpplyItemId() == null ? "" : m.getSpplyItemId())
  91. .unitStCd(m.getUnitStCd() == null ? "" : m.getUnitStCd())
  92. .unitStNm(m.getUnitStNm() == null ? "" : m.getUnitStNm())
  93. .stddQty(m.getStddQty() == null ? 0 : m.getStddQty())
  94. .build())
  95. .collect(Collectors.toList());
  96. return GridResponse.toDTO(gridPage, gridTotal, gridRecords, gridRows);
  97. }
  98. /*
  99. 공급사단가 리스트 조회
  100. */
  101. public GridResponse selectSpplyItemUnitGridList(String sBrandId, String fromDt, String toDt, String sUnitStCd, String sSpplyId, String sItemNm, GridRequest gridRequest) throws Exception {
  102. int gridPage = gridRequest.getGridPage();
  103. int gridSize = gridRequest.getGridSize();
  104. fromDt = fromDt == null ? null : fromDt.replace(".", "");
  105. toDt = toDt == null ? null : toDt.replace(".", "");
  106. int gridRecords = itemUnitMapper.selectItemUnitGridCnt(sBrandId, fromDt, toDt, sUnitStCd, sSpplyId, "", "", "", "", sItemNm);
  107. int gridTotal = fnCalculateGridTotal(gridSize, gridRecords);
  108. List<ItemUnitEntity> entities = itemUnitMapper.selectItemUnitGridList(sBrandId, fromDt, toDt, sUnitStCd, sSpplyId, "", "", "", "", sItemNm, gridRequest);
  109. List<Object> gridRows = entities.stream()
  110. .map(m -> ItemUnitSearchResponse.builder()
  111. .viewCd("R")
  112. .brandUnitUnqNo(m.getBrandUnitUnqNo())
  113. .brandId(m.getBrandId())
  114. .itemId(m.getItemId())
  115. .itemNm(m.getItemNm())
  116. .spplyId(m.getSpplyId())
  117. .spplyNm(m.getSpplyNm())
  118. .contSttDt(m.getContSttDt() == null ? "" : m.getContSttDt())
  119. .contEndDt(m.getContEndDt() == null ? "" : m.getContEndDt())
  120. .curr(m.getCurr() == null ? "" : m.getCurr())
  121. .currNm(m.getCurrNm() == null ? "" : m.getCurrNm())
  122. .unit(m.getUnit() == null ? "" : m.getUnit())
  123. .unitNm(m.getUnitNm() == null ? "" : m.getUnitNm())
  124. .unitAmt(m.getUnitAmt() == null ? 0 : m.getUnitAmt())
  125. .leadTime(m.getLeadTime() == null ? 0 : m.getLeadTime())
  126. .spplyItemId(m.getSpplyItemId() == null ? "" : m.getSpplyItemId())
  127. .unitStCd(m.getUnitStCd() == null ? "" : m.getUnitStCd())
  128. .unitStNm(m.getUnitStNm() == null ? "" : m.getUnitStNm())
  129. .stddQty(m.getStddQty() == null ? 0 : m.getStddQty())
  130. .build())
  131. .collect(Collectors.toList());
  132. return GridResponse.toDTO(gridPage, gridTotal, gridRecords, gridRows);
  133. }
  134. /* 공급사 단가 정보 */
  135. public ItemUnitInfoResponse selectItemUnitInfo(String brandId, String brandUnitUnqNo) throws Exception {
  136. ItemUnitEntity entity = itemUnitMapper.selectItemUnitInfo(brandId, brandUnitUnqNo);
  137. List<FileEntity> fileContInfoList = null;
  138. if (!StringUtil.isEmpty(entity.getShortContFileNo())) {
  139. fileContInfoList = fileMapper.selectFileList(entity.getShortContFileNo());
  140. } else {
  141. fileContInfoList = new ArrayList<FileEntity>();
  142. }
  143. return ItemUnitInfoResponse.toDTO(entity, fileContInfoList);
  144. }
  145. /* 공급사 단가 저장 */
  146. @Transactional
  147. public void saveItemUnitInfo(String userId, SaveItemUnitInfolRequest saveItemUnitInfolRequest) throws Exception {
  148. try {
  149. ItemUnitEntity entity = new ItemUnitEntity();
  150. entity.setBrandUnitUnqNo(saveItemUnitInfolRequest.getBrandUnitUnqNo());
  151. entity.setBrandId(saveItemUnitInfolRequest.getBrandId());
  152. entity.setBrandNm(saveItemUnitInfolRequest.getBrandNm());
  153. entity.setItemId(saveItemUnitInfolRequest.getItemId());
  154. entity.setItemNm(saveItemUnitInfolRequest.getItemNm());
  155. entity.setSpplyId(saveItemUnitInfolRequest.getSpplyId());
  156. entity.setSpplyNm(saveItemUnitInfolRequest.getSpplyNm());
  157. entity.setContSttDt(saveItemUnitInfolRequest.getContSttDt().replaceAll("\\.", ""));
  158. entity.setContEndDt(saveItemUnitInfolRequest.getContEndDt().replaceAll("\\.", ""));
  159. entity.setCurr(saveItemUnitInfolRequest.getCurr());
  160. entity.setUnit(saveItemUnitInfolRequest.getUnit());
  161. entity.setUnitAmt(saveItemUnitInfolRequest.getUnitAmt());
  162. entity.setLeadTime(saveItemUnitInfolRequest.getLeadTime());
  163. entity.setDlvCndt(saveItemUnitInfolRequest.getDlvCndt());
  164. entity.setShortContFileNo(saveItemUnitInfolRequest.getShortContFileNo());
  165. entity.setSpplyItemId(saveItemUnitInfolRequest.getSpplyItemId());
  166. entity.setUnitStCd(saveItemUnitInfolRequest.getUnitStCd());
  167. entity.setStddQty(saveItemUnitInfolRequest.getStddQty());
  168. entity.setStoreSaleStddQty(saveItemUnitInfolRequest.getStoreSaleStddQty());
  169. entity.setStoreSaleUnitAmt(saveItemUnitInfolRequest.getStoreSaleUnitAmt());
  170. if ("C".equals(saveItemUnitInfolRequest.getViewCd())) {
  171. //selectItemUnitDupContInfoNo 날짜 기준 계약 존재여부 파악
  172. int dupCnt = itemUnitMapper.selectItemUnitDupCnt(entity.getBrandId(), entity.getSpplyId(), entity.getItemId(), entity.getContSttDt());
  173. if (dupCnt != 0) {
  174. // 이미 진행중인 계약단가가 있습니다.
  175. throw new GlobalException(SystemMessageCode.ERR_EXISTUNIT);
  176. }
  177. } else {
  178. String passChk = itemUnitMapper.selectItemUnitChaPass(entity.getBrandUnitUnqNo(), entity.getContSttDt());
  179. if ("N".equals(passChk)) {
  180. // 시작일은 변경 불가
  181. throw new GlobalException(SystemMessageCode.ERR_NOTCHGDT);
  182. }
  183. }
  184. if (StringUtil.isEmpty(entity.getBrandUnitUnqNo())) {
  185. itemUnitMapper.insertItemUnitInfo(userId, entity);
  186. } else {
  187. itemUnitMapper.updateItemUnitInfo(userId, entity);
  188. }
  189. } catch (GlobalException e) {
  190. e.printStackTrace();
  191. //e.getStackTrace();
  192. throw new GlobalException(e.getSystemMessageCode());
  193. } catch (Exception e) {
  194. e.printStackTrace();
  195. //e.getStackTrace();
  196. throw new RuntimeException();
  197. }
  198. }
  199. /*
  200. 브랜드 매장 단가 리스트 조회
  201. */
  202. public GridResponse selectStoreItemUnitGridList(String userId, String sBrandId, String sStoreId, String sStoreNm, GridRequest gridRequest) throws Exception {
  203. int gridPage = gridRequest.getGridPage();
  204. int gridSize = gridRequest.getGridSize();
  205. //사용자 정보로 매장정보 가져오기
  206. UserMngEntity uEntity = userMngMapper.selectGroupUserInfo(userId);
  207. if ("50".equals(uEntity.getAuthTpCd())) {
  208. if (StringUtil.isEmpty(sStoreId)) {
  209. throw new GlobalException(SystemMessageCode.ERR_NONSTOREID);
  210. } else {
  211. if (!sStoreId.equals(uEntity.getStoreId())) {
  212. throw new GlobalException(SystemMessageCode.ERR_NOTSTOREBELONG);
  213. }
  214. }
  215. }
  216. int gridRecords = storeItemUnitMapper.selectStoreItemUnitGridCnt(sBrandId, sStoreId, sStoreNm);
  217. int gridTotal = fnCalculateGridTotal(gridSize, gridRecords);
  218. List<StoreItemUnitEntity> entities = storeItemUnitMapper.selectStoreItemUnitGridList(sBrandId, sStoreId, sStoreNm, gridRequest);
  219. List<Object> gridRows = entities.stream()
  220. .map(m -> StoreItemUnitSearchResponse.builder()
  221. .viewCd("R")
  222. .brandId(m.getBrandId())
  223. .brandNm(m.getBrandNm())
  224. .storeId(m.getStoreId())
  225. .storeNm(m.getStoreNm())
  226. .contSttDt(m.getContSttDt())
  227. .contEndDt(m.getContEndDt())
  228. .sysRegDttm(m.getSysRegDttm())
  229. .itemCnt(m.getItemCnt())
  230. .build())
  231. .collect(Collectors.toList());
  232. return GridResponse.toDTO(gridPage, gridTotal, gridRecords, gridRows);
  233. }
  234. /*
  235. 매장용 매장 단가 리스트 조회
  236. */
  237. /*
  238. public GridResponse selectSstoreItemUnitGridList(String sBrandId, String sStoreId, GridRequest gridRequest) throws Exception {
  239. int gridPage = gridRequest.getGridPage();
  240. int gridSize = gridRequest.getGridSize();
  241. int gridRecords = storeItemUnitMapper.selectSstoreItemUnitGridCnt( sBrandId, sStoreId );
  242. int gridTotal = fnCalculateGridTotal(gridSize, gridRecords);
  243. List<StoreItemUnitEntity> entities = storeItemUnitMapper.selectSstoreItemUnitGridList(sBrandId, sStoreId, gridRequest);
  244. List<Object> gridRows = entities.stream()
  245. .map(m -> StoreItemUnitSearchResponse.builder()
  246. .viewCd("R")
  247. .brandId(m.getBrandId())
  248. .brandNm(m.getBrandNm())
  249. .storeId(m.getStoreId())
  250. .storeNm(m.getStoreNm())
  251. .contSttDt(m.getContSttDt())
  252. .contEndDt(m.getContEndDt())
  253. .sysRegDttm(m.getSysRegDttm())
  254. .itemCnt(m.getItemCnt())
  255. .build())
  256. .collect(Collectors.toList());
  257. return GridResponse.toDTO(gridPage, gridTotal, gridRecords, gridRows);
  258. }
  259. */
  260. /* 신규 매장단가 정보 초기 세팅값 */
  261. /* 매장 단가 정보 */
  262. public StoreItemUnitInfoResponse selectStoreNewItemUnitInfo(String brandId) throws Exception {
  263. List<StoreItemUnitEntity> entities = storeItemUnitMapper.selectStoreNewItemUnitInfo(brandId);
  264. return StoreItemUnitInfoResponse.toDTO(entities);
  265. }
  266. /* 매장 단가 정보 */
  267. public StoreItemUnitInfoResponse selectStoreItemUnitInfo(String userId, StoreItemUnitInfolRequest storeItemUnitInfolRequest) throws Exception {
  268. //사용자 정보로 매장정보 가져오기
  269. UserMngEntity uEntity = userMngMapper.selectGroupUserInfo(userId);
  270. if ("50".equals(uEntity.getAuthTpCd())) {
  271. if (StringUtil.isEmpty(storeItemUnitInfolRequest.getStoreId())) {
  272. throw new GlobalException(SystemMessageCode.ERR_NONSTOREID);
  273. } else {
  274. if (!storeItemUnitInfolRequest.getStoreId().equals(uEntity.getStoreId())) {
  275. throw new GlobalException(SystemMessageCode.ERR_NOTSTOREBELONG);
  276. }
  277. }
  278. }
  279. String brandId = storeItemUnitInfolRequest.getBrandId();
  280. String storeId = storeItemUnitInfolRequest.getStoreId();
  281. String contSttDt = storeItemUnitInfolRequest.getContSttDt();
  282. String contEndDt = storeItemUnitInfolRequest.getContEndDt();
  283. contSttDt = contSttDt == null ? null : contSttDt.replace(".", "");
  284. contEndDt = contEndDt == null ? null : contEndDt.replace(".", "");
  285. List<StoreItemUnitEntity> entities = storeItemUnitMapper.selectStoreItemUnitInfo(brandId, storeId, contSttDt, contEndDt);
  286. return StoreItemUnitInfoResponse.toDTO(entities);
  287. }
  288. /* 매장 단가 저장 */
  289. @Transactional
  290. public void saveStroeItemUnitInfo(String userId, SaveStoreItemUnitInfolRequest saveStoreItemUnitInfolRequest) throws Exception {
  291. try {
  292. StoreItemUnitEntity entity = new StoreItemUnitEntity();
  293. entity.setBrandId(saveStoreItemUnitInfolRequest.getBrandId());
  294. entity.setStoreId(saveStoreItemUnitInfolRequest.getStoreId());
  295. entity.setContSttDt(saveStoreItemUnitInfolRequest.getContSttDt().replaceAll("\\.", ""));
  296. entity.setContEndDt(saveStoreItemUnitInfolRequest.getContEndDt().replaceAll("\\.", ""));
  297. //신규
  298. // 종료일짜 변경 여부 확인
  299. String chgEndDtYn = "N";
  300. if ("U".toString().equals(saveStoreItemUnitInfolRequest.getViewCd())) {
  301. String lastEndDt = storeItemUnitMapper.selectStoreItemUnitEndDtInfo(entity.getBrandId(), entity.getStoreId(), entity.getContSttDt());
  302. if (!lastEndDt.equals(entity.getContEndDt())) {
  303. chgEndDtYn = "Y";
  304. }
  305. }
  306. List<StoreItemUnitEntity> gridUpdateData = saveStoreItemUnitInfolRequest.toCodeEntities(saveStoreItemUnitInfolRequest.getGridUpdateData());
  307. List<StoreItemUnitEntity> gridInsertData = saveStoreItemUnitInfolRequest.toCodeEntities(saveStoreItemUnitInfolRequest.getGridInsertData());
  308. if (gridInsertData.size() > 0) {
  309. for (int k = 0; k < gridInsertData.size(); k++) {
  310. if ("C".toString().equals(saveStoreItemUnitInfolRequest.getViewCd())) {
  311. gridInsertData.get(k).setContSttDt(entity.getContSttDt());
  312. gridInsertData.get(k).setContEndDt(entity.getContEndDt());
  313. } else {
  314. gridInsertData.get(k).setContSttDt(gridInsertData.get(k).getContSttDt().replaceAll("\\.", ""));
  315. gridInsertData.get(k).setContEndDt(gridInsertData.get(k).getContEndDt().replaceAll("\\.", ""));
  316. }
  317. }
  318. }
  319. if (gridUpdateData.size() > 0) {
  320. for (int k = 0; k < gridUpdateData.size(); k++) {
  321. gridUpdateData.get(k).setContSttDt(gridUpdateData.get(k).getContSttDt().replaceAll("\\.", ""));
  322. gridUpdateData.get(k).setContEndDt(gridUpdateData.get(k).getContEndDt().replaceAll("\\.", ""));
  323. }
  324. }
  325. // 신규일경우 계약기간 날짜 체크함
  326. if ("C".toString().equals(saveStoreItemUnitInfolRequest.getViewCd())) {
  327. SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
  328. Date chkenddate = formatter.parse(entity.getContEndDt());
  329. Date chksttdate = formatter.parse(entity.getContSttDt());
  330. int result1 = chkenddate.compareTo(chksttdate);
  331. // 시작일과 종료일이 반대기간으로 되어져있을 경우
  332. if (result1 < 0) {
  333. throw new GlobalException(SystemMessageCode.ERR_CHGDTOPP);
  334. }
  335. StoreItemUnitEntity dtEntity = storeItemUnitMapper.selectStoreItemUnitContDtInfo(entity.getBrandId(), entity.getStoreId());
  336. if (dtEntity.getContSttDt() != null && !dtEntity.getContSttDt().equals("")) {
  337. // 서로 상이하면 기존 종료일자는 전송시작일보다 클경우 오류
  338. // 문자열 -> Date
  339. Date dtEnddate = formatter.parse(dtEntity.getContEndDt());
  340. Date sttdate = formatter.parse(entity.getContSttDt());
  341. int result = dtEnddate.compareTo(sttdate);
  342. if (result > 0) {
  343. // 진행중 단가계약이 있습니다.
  344. throw new GlobalException(SystemMessageCode.ERR_EXISTUNIT);
  345. }
  346. }
  347. }
  348. if (gridInsertData.size() > 0) {
  349. storeItemUnitMapper.insertStoreItemUnitInfo(userId, entity.getBrandId(), entity.getStoreId(), entity.getContSttDt(), entity.getContEndDt(), gridInsertData);
  350. }
  351. if (gridUpdateData.size() > 0) {
  352. storeItemUnitMapper.updateStoreItemUnitInfo(userId, entity.getBrandId(), entity.getStoreId(), entity.getContSttDt(), entity.getContEndDt(), gridUpdateData);
  353. }
  354. // 수정에 대해 날짜 변동시 전체 변동처리함
  355. if ("Y".toString().equals(chgEndDtYn)) {
  356. storeItemUnitMapper.updateStoreItemUnitChgContEnd(entity.getBrandId(), entity.getStoreId(), entity.getContSttDt(), entity.getContEndDt());
  357. }
  358. // TODO 오더퀸 연동
  359. StoreBaseInfoEntity storeInfo = storeBaseInfoMapper.selectStoreInfo(saveStoreItemUnitInfolRequest.getBrandId(), saveStoreItemUnitInfolRequest.getStoreId());
  360. if (!StringUtil.isEmpty(storeInfo.getOqBrandId()) && !StringUtil.isEmpty(storeInfo.getOqStoreId())) {
  361. List<OqScmMenuModel> menuList = new ArrayList<>();
  362. // 등록 리스트 처리
  363. for (StoreItemUnitEntity item : gridInsertData) {
  364. OqScmMenuModel menu = toOqScmMenuModel(saveStoreItemUnitInfolRequest, item);
  365. menuList.add(menu);
  366. }
  367. // 수정 리스트 처리
  368. for (StoreItemUnitEntity item : gridUpdateData) {
  369. OqScmMenuModel menu = toOqScmMenuModel(saveStoreItemUnitInfolRequest, item);
  370. menuList.add(menu);
  371. }
  372. if (menuList.size() > 0) {
  373. OqScmStorePriceChangeReqModel req = new OqScmStorePriceChangeReqModel();
  374. req.setBrandCd(storeInfo.getOqBrandId());
  375. req.setStoreNo(storeInfo.getOqStoreId());
  376. req.setMenuList(menuList);
  377. log.info("IF TRANS DATA ===============================");
  378. log.info(req.toString());
  379. OqScmStorePriceChangeResModel res = oqlinkClient.changeScmStorePrice(HmacUtil.makeHmacValue4OqLink(req), req);
  380. log.info("IF RETURN DATA ===============================");
  381. log.info(res.toString());
  382. if (SystemMessageCode.BO_IF_OK.getId() == Integer.parseInt(res.getCode())) {
  383. // 오더퀸 메뉴코드 업데이트
  384. ItemEntity itemEntity = null;
  385. for (OqScmMenuModel item : res.getMenuList()) {
  386. itemEntity = toItemEntity4OqLink(item);
  387. itemMapper.updateItemInfo4OqLinik(userId, itemEntity);
  388. }
  389. } else {
  390. throw new GlobalException(SystemMessageCode.valueOf(Integer.valueOf(res.getCode())));
  391. }
  392. }
  393. }
  394. } catch (GlobalException e) {
  395. e.getStackTrace();
  396. throw new GlobalException(e.getSystemMessageCode());
  397. } catch (Exception e) {
  398. e.printStackTrace();
  399. throw new RuntimeException();
  400. }
  401. }
  402. private ItemEntity toItemEntity4OqLink(OqScmMenuModel item) {
  403. ItemEntity itemEntity = new ItemEntity();
  404. itemEntity.setItemId(item.getItemId());
  405. itemEntity.setOqMenuCd(item.getMenuCd());
  406. return itemEntity;
  407. }
  408. private OqScmMenuModel toOqScmMenuModel(SaveStoreItemUnitInfolRequest saveStoreItemUnitInfolRequest, StoreItemUnitEntity item) throws Exception {
  409. ItemEntity itemInfo = itemMapper.selectItemInfo(saveStoreItemUnitInfolRequest.getBrandId(), item.getItemId());
  410. OqScmMenuModel menu = new OqScmMenuModel();
  411. menu.setItemId(item.getItemId()); // 품목아이디
  412. menu.setSupplyPrice(item.getUnitAmt().intValue()); // 단가금액
  413. menu.setMenuCd(itemInfo == null || StringUtil.isEmpty(itemInfo.getOqMenuCd()) ? null : itemInfo.getOqMenuCd());
  414. return menu;
  415. }
  416. }