diff --git a/src/main/java/com/wb/domainserver/acidlivy/tasklet/AciPodTasklet.java b/src/main/java/com/wb/domainserver/acidlivy/tasklet/AciPodTasklet.java index c3ed61c..4928b01 100644 --- a/src/main/java/com/wb/domainserver/acidlivy/tasklet/AciPodTasklet.java +++ b/src/main/java/com/wb/domainserver/acidlivy/tasklet/AciPodTasklet.java @@ -3,9 +3,10 @@ package com.wb.domainserver.acidlivy.tasklet; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO; +import com.wb.domainserver.acidlivy.vo.BODlivyUpdtVO; +import com.wb.domainserver.exception.WnbtRestException; import com.wb.domainserver.mapper.gcone.AciDlivyMapper; import com.wb.domainserver.response.WnbtWebClientResponseHandler; -import com.wb.domainserver.util.communicate.RESRC; import com.wb.domainserver.util.communicate.SendToResrc; import com.wb.domainserver.util.dataaccess.DataMap; import lombok.RequiredArgsConstructor; @@ -20,11 +21,12 @@ import org.springframework.http.*; import org.springframework.stereotype.Component; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionDefinition; +import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.support.TransactionTemplate; import org.springframework.util.CollectionUtils; import org.springframework.web.client.RestTemplate; -import java.text.SimpleDateFormat; +import java.math.BigInteger; import java.util.*; // ACI 배송자료 조회 및 배송처리 배치 Tasklet @@ -94,17 +96,17 @@ public class AciPodTasklet implements Tasklet { .allMatch(podInfo -> !isBlank(podInfo, "dateDelivery")); // 건별 배송처리 - DataMap dataMap = new DataMap(); - dataMap.put("dlivyInnb", dlivyOrderVO.getDlivyInnb()); - dataMap.put("dlivySttusCd", dlivyOrderVO.getDlivySttusCd()); - dataMap.put("sopmalCd", dlivyOrderVO.getSopmalCd()); + BODlivyUpdtVO boDlivyUpdtVO = new BODlivyUpdtVO(); + boDlivyUpdtVO.setDlivyInnb(dlivyOrderVO.getDlivyInnb()); + boDlivyUpdtVO.setDlivySttusCd(dlivyOrderVO.getDlivySttusCd()); + boDlivyUpdtVO.setSopmalCd(dlivyOrderVO.getSopmalCd()); if(dlvyInPrg) { - dataMap.put("dlivySttusCd", "65"); - processDeliveryPod(dataMap); + boDlivyUpdtVO.setDlivySttusCd("65"); + processDeliveryPod(boDlivyUpdtVO); } if(dlvyCompt) { - dataMap.put("dlivySttusCd", "75"); - processDeliveryPod(dataMap); + boDlivyUpdtVO.setDlivySttusCd("75"); + processDeliveryPod(boDlivyUpdtVO); } successCnt++; } @@ -269,28 +271,160 @@ public class AciPodTasklet implements Tasklet { /** * 배송처리 */ - private void processDeliveryPod(DataMap dataMap) { - dataMap.put("opetrNm", "시스템"); - dataMap.put("regusr", 0); - dataMap.put("updusr", 0); + private void processDeliveryPod(BODlivyUpdtVO boDlivyUpdtVO) { + boDlivyUpdtVO.setOpetrNm("시스템"); + boDlivyUpdtVO.setRegusr(0); + boDlivyUpdtVO.setUpdusr(0); - Map result = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/mngr/ordr/dlivy/updateDlivySttusGetbackBatchUpdt", dataMap) - ); - log.debug("result = {}", result); + Map message = new HashMap<>(); + try { + updateBODlvySttusUpdt(boDlivyUpdtVO); - // 메시지전송 ================================================================== - /*List smsList = mapper.selectDlivySmsListInqire(tempVO); - log.debug("메시지 발송 파라미터 확인 : {}", smsList); - if (!CollectionUtils.isEmpty(smsList)) { - System.out.println("smsList = " + smsList); + // 메시지전송 ================================================================== + /*List smsList = mapper.selectDlivySmsListInqire(tempVO); + log.debug("메시지 발송 파라미터 확인 : {}", smsList); + if (!CollectionUtils.isEmpty(smsList)) { + System.out.println("smsList = " + smsList); - try { - DataMap result = mssageService.insertBOAtmcsndng(smsList); - } catch (Exception e) { - log.debug("메시지 발송 실패"); + try { + DataMap result = mssageService.insertBOAtmcsndng(smsList); + } catch (Exception e) { + log.debug("메시지 발송 실패"); + } + }*/ + + message.put("dlivyInnb", boDlivyUpdtVO.getDlivyInnb()); + message.put("result", "success"); + message.put("status", "0"); + } catch (WnbtRestException wre){ + message.put("status", "1"); + log.error(wre.getMessage(), wre); + throw new WnbtRestException(wre.getMessage()); + } catch (Exception e) { + message.put("status", "1"); + message.put("errorMsg", e.getMessage()); + log.error(e.getMessage(), e); + // throw new WnbtRestException(e.getMessage()); + } + + log.debug("result = {}", message); + } + + /** + * 출고상태변경 팝업 > 출고 상태변경 ( '배송중', '배송완료' ) > 출고 및 주문 상태 업데이트 + * @param tempVO + */ + @Transactional + public Map updateBODlvySttusUpdt(BODlivyUpdtVO tempVO) { + Map message = new HashMap<>(); + List orderLogList = new ArrayList<>(); + String logSj = ""; + String logDtlCn = ""; + String dlivyCdNb = ""; + + Integer ordrItemResult = 0; + String ordrInnb = ""; + + try { + log.debug("출고 상태 일괄 변경 tempVO : {}", tempVO); + ordrItemResult = AciDlivyMapper.updateBODlivySttusGetbackUpdtArr(tempVO); + + List orderItemList = AciDlivyMapper.selectBOExportOrderItemInqire(tempVO); + + Set ordrDlvyInnbSet = new HashSet<>(); + + if (ordrItemResult > 0) { + if (orderItemList != null && orderItemList.size() > 0) { + ordrInnb = String.valueOf(orderItemList.get(0).get("ordrInnb")); + + // 주문 상품 옵션 상태 부분배송중(60), 배송중(65) 처리 및 수량 수정 + for (DataMap item : orderItemList) { + item.put("dlivySttusCd", tempVO.getDlivySttusCd()); + item.put("updusr", tempVO.getUpdusr()); + // 해당하는 주문상품옵션 배송중 수량 update 하는데 배송중 수량이 (판매가 - 결제취소 ) 수량보다 작으면 상태 부분배송중으로 업데이트 + AciDlivyMapper.updateBOOrdrItemStatusUpdt6575(item); // TODO : 배송중 처리하면 개수안맞아도 걍 다 배송중 처리해야하는건지 확인 필요 + + dlivyCdNb = String.valueOf(item.get("dlivyCdNb")); + ordrDlvyInnbSet.add(item.get("ordrDlvyInnb").toString()); + } + + String[] ordrDlvyInnbArr = ordrDlvyInnbSet.toArray(new String[0]); + log.debug("주문 배송 set : {}", ordrDlvyInnbSet); + log.debug("주문 set : {}", ordrInnb); + + // 주문 배송 상태 부분배송중(60), 배송중(65) 처리 + DataMap dlvyVO = new DataMap(); + dlvyVO.put("ordrDlvyInnbArr", ordrDlvyInnbArr); + dlvyVO.put("sopmalCd", tempVO.getSopmalCd()); + dlvyVO.put("ordrInnb", ordrInnb); + dlvyVO.put("updusr", tempVO.getUpdusr()); + Integer dlvyResult = 0; + + dlvyResult = AciDlivyMapper.updateBOOrdrDlvyStatusUpdt6575(dlvyVO); + + // 주문 상태 부분배송중(60), 배송중(65) 처리 + if (dlvyResult > 0) { + DataMap ordrVO = new DataMap(); + ordrVO.put("ordrInnb", ordrInnb); + ordrVO.put("sopmalCd", tempVO.getSopmalCd()); + ordrVO.put("updusr", tempVO.getUpdusr()); + AciDlivyMapper.updateBOOrdrStatusUpdt6575(ordrVO); + } + + if ("65".equals(tempVO.getDlivySttusCd())) { + logSj = "배송중(" + dlivyCdNb + ")"; + } else if ("75".equals(tempVO.getDlivySttusCd())) { + logSj = "배송완료(" + dlivyCdNb + ")"; + } + logDtlCn = "[관리자] " + tempVO.getOpetrNm() + "이(가)" + logSj + " 처리를 하였습니다."; + + } else { + if ("65".equals(tempVO.getDlivySttusCd())) { + logSj = "배송중(ERROR)"; + } else if ("75".equals(tempVO.getDlivySttusCd())) { + logSj = "배송완료(ERROR)"; + } + logDtlCn = "[관리자] " + tempVO.getOpetrNm() + "이(가)" + logSj + " 처리를 실패하였습니다."; + + } } - }*/ + } catch (WnbtRestException wre){ + throw new WnbtRestException(wre.getMessage()); + } catch (Exception e ){ + log.error(e.getMessage(), e); + } finally { + DataMap orderLogVO = new DataMap(); + if (ordrInnb != null && !ordrInnb.equals("")) { + orderLogVO.put("ordrInnb", BigInteger.valueOf(Long.valueOf(ordrInnb))); + } + orderLogVO.put("sopmalCd", tempVO.getSopmalCd()); + orderLogVO.put("logSj", logSj); + orderLogVO.put("logDtlCn", logDtlCn); + orderLogVO.put("logDvCd", "05"); // 출고 + orderLogVO.put("dvCd", "02"); // 관리자 + orderLogVO.put("opetrNm", tempVO.getOpetrNm()); + orderLogVO.put("dlivyCdNb", tempVO.getDlivyInnb()); + orderLogVO.put("qy", 0); + + orderLogList.add(orderLogVO); + + insertBODlivyOrdrLogRegist(orderLogList); + } + + return message; + } + + /** + * 출고 관련 주문 로그 등록 + */ + public void insertBODlivyOrdrLogRegist(List logList) { + + if (!CollectionUtils.isEmpty(logList)) { + for (DataMap logVO : logList) { + AciDlivyMapper.insertOrderLog(logVO); + } + } + } /** diff --git a/src/main/java/com/wb/domainserver/acidlivy/vo/BODlivyUpdtVO.java b/src/main/java/com/wb/domainserver/acidlivy/vo/BODlivyUpdtVO.java new file mode 100644 index 0000000..ed088f3 --- /dev/null +++ b/src/main/java/com/wb/domainserver/acidlivy/vo/BODlivyUpdtVO.java @@ -0,0 +1,21 @@ +package com.wb.domainserver.acidlivy.vo; + +import lombok.Data; + +@Data +public class BODlivyUpdtVO { + + /**출고고유번호*/ + private String dlivyInnb; + /**출고준비(45), 출고완료(55), 배송중(65), 배송완료(75)*/ + private String dlivySttusCd; + /**쇼핑몰 코드*/ + private String sopmalCd; + /** 처리자명 */ + private String opetrNm; + + /** 등록자*/ + private int regusr; + /** 수정자*/ + private int updusr; +} diff --git a/src/main/java/com/wb/domainserver/mapper/gcone/AciDlivyMapper.java b/src/main/java/com/wb/domainserver/mapper/gcone/AciDlivyMapper.java index 15829d2..d373619 100644 --- a/src/main/java/com/wb/domainserver/mapper/gcone/AciDlivyMapper.java +++ b/src/main/java/com/wb/domainserver/mapper/gcone/AciDlivyMapper.java @@ -1,6 +1,7 @@ package com.wb.domainserver.mapper.gcone; import com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO; +import com.wb.domainserver.acidlivy.vo.BODlivyUpdtVO; import com.wb.domainserver.util.dataaccess.DataMap; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; @@ -55,4 +56,19 @@ public interface AciDlivyMapper { /** 배송처리 대상 주문 목록 조회 (gc_goods_export.DLIVY_STTUS_CD = '55') */ List selectGoodsExportList(String dlivySttusCd); + + /** 출고 상태 일괄 변경 다건 */ + public Integer updateBODlivySttusGetbackUpdtArr(BODlivyUpdtVO dlivyVO); + + /** 출고에 해당하는 주문 상품 옵션 조회 */ + public List selectBOExportOrderItemInqire(BODlivyUpdtVO dlivyVO); + + /** 출고처리 후 주문 상품 옵션 상태 및 수량 수정 */ + public void updateBOOrdrItemStatusUpdt6575(DataMap ordrItemVO); + + /** 출고처리 후 주문 배송 상태 수정 */ + public Integer updateBOOrdrDlvyStatusUpdt6575(DataMap ordrItemVO); + + /** 출고처리 후 주문 상태 수정 */ + public void updateBOOrdrStatusUpdt6575(DataMap ordrItemVO); } diff --git a/src/main/resources/mybatis/xml/mapper/gcone/AciDlivyMapper.xml b/src/main/resources/mybatis/xml/mapper/gcone/AciDlivyMapper.xml index f70f2f4..6f74a6c 100644 --- a/src/main/resources/mybatis/xml/mapper/gcone/AciDlivyMapper.xml +++ b/src/main/resources/mybatis/xml/mapper/gcone/AciDlivyMapper.xml @@ -389,4 +389,244 @@ ]]> + + + + + + + + + #{qy} THEN '60' + WHEN (ORDR_QY - STEP85) = #{qy} THEN '65' + ELSE ORDR_STTUS_CD + END + ,STEP65 = #{qy} + ,STEP55 = CASE + WHEN (STEP55 - #{qy}) < 0 THEN 0 + ELSE (STEP55 - #{qy}) + END, + ]]> + + + #{qy} THEN '70' + WHEN (ORDR_QY - STEP85) = #{qy} THEN '75' + ELSE ORDR_STTUS_CD + END + ,STEP55 = CASE + WHEN (STEP55 - #{qy}) < 0 THEN 0 + ELSE (STEP55 - #{qy}) + END + ,STEP65 = CASE + WHEN (STEP65 - #{qy}) < 0 THEN 0 + ELSE (STEP65 - #{qy}) + END + ,STEP75 = #{qy}, + ]]> + + + #{qy} THEN '50' + WHEN (ORDR_QY - STEP85) = #{qy} THEN '55' + ELSE ORDR_STTUS_CD + END + ,STEP55 = #{qy}, + ]]> + + + + + + + + OIOP.STEP85 + WHERE SH.SOPMAL_CD = #{sopmalCd} + AND SH.ORDR_INNB = #{ordrInnb} + ]]> + + + AND SH.ORDR_DLVY_INNB = #{ordrDlvyInnb} + + + + + #{ordrDlvyInnbArr} + + + + + + + + + + '85' + WHERE O.SOPMAL_CD = #{sopmalCd} + AND O.ORDR_INNB = #{ordrInnb} + GROUP BY O.SOPMAL_CD, O.ORDR_INNB + ) STEP + SET + O.ORDR_STTUS_CD = STEP.ORDR_STTUS_CD + ,O.MNGR_INNB = #{updusr} + ,O.UPDT_DT = SYSDATE() + WHERE 1 = 1 + AND O.SOPMAL_CD = STEP.SOPMAL_CD + AND O.ORDR_INNB = STEP.ORDR_INNB + AND O.USE_AT = 'Y' + ]]> + +