|
@@ -35,7 +35,6 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public Collection<Delivery> read() throws Exception {
|
|
public Collection<Delivery> read() throws Exception {
|
|
|
-
|
|
|
|
|
// 1. 출고처지정 대상조회
|
|
// 1. 출고처지정 대상조회
|
|
|
Collection<Delivery> ordnoList = deliveryService.getOrderNoList();
|
|
Collection<Delivery> ordnoList = deliveryService.getOrderNoList();
|
|
|
return ordnoList;
|
|
return ordnoList;
|
|
@@ -48,48 +47,52 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 1. 출고처지정 대상조회
|
|
* 1. 출고처지정 대상조회
|
|
|
- *
|
|
|
|
|
- * 2. WMS 재고체크 후 주문의상품재고가 다 있을경우 WMS로 출고처지정
|
|
|
|
|
- *
|
|
|
|
|
- * 3. WMS의 주문단위 상품재고가 없을경우 매장재고 체크 후 주문단위 상품이 모두있을경우 해당 매장으로 출고처 지정
|
|
|
|
|
- *
|
|
|
|
|
|
|
+ * 2. WMS 재고체크 후 주문상품재고가 다 있을경우 WMS로 출고처지정
|
|
|
|
|
+ * 3. WMS의 주문단위 상품재고가 없을경우 매장재고 체크 후 주문단위 상품이 모두있을경우 해당 매장으로 출고처 지정
|
|
|
* 4. 주문상품의 모든재고가 (WMS, 매장) 모두 없을경우 WMS로 출고처지정 (부분배송) 이때 교환은 교환출고예외 테이블에 등록(tb_exchange_delv_fail)
|
|
* 4. 주문상품의 모든재고가 (WMS, 매장) 모두 없을경우 WMS로 출고처지정 (부분배송) 이때 교환은 교환출고예외 테이블에 등록(tb_exchange_delv_fail)
|
|
|
- *
|
|
|
|
|
- * 5. 출고처 WMS 리스트 조회 후 WMS_IF 테이블에 등록
|
|
|
|
|
- *
|
|
|
|
|
|
|
+ * 5. 출고처 WMS 리스트 조회 후 WMS_IF 테이블에 등록
|
|
|
* */
|
|
* */
|
|
|
-
|
|
|
|
|
- String ShopYn = "N";
|
|
|
|
|
- String WmsYn = "N";
|
|
|
|
|
|
|
+ String ShopYn = "N";
|
|
|
|
|
+ String WmsYn = "N";
|
|
|
|
|
|
|
|
// WMS 창고 출고처 지정
|
|
// WMS 창고 출고처 지정
|
|
|
for (Delivery ordNoData : ordnoList) {
|
|
for (Delivery ordNoData : ordnoList) {
|
|
|
try {
|
|
try {
|
|
|
- ShopYn = "N";
|
|
|
|
|
- WmsYn = "N";
|
|
|
|
|
- //2. WMS 재고체크 후 주문의상품재고가 다 있을경우 WMS로 출고처지정
|
|
|
|
|
|
|
+ WmsYn = "Y";
|
|
|
|
|
+ ShopYn = "N";
|
|
|
|
|
+
|
|
|
|
|
+ // 2. WMS 재고체크 후 주문상품재고가 다 있을경우 WMS로 출고처지정
|
|
|
// 주문상세번호 조회
|
|
// 주문상세번호 조회
|
|
|
Collection<Delivery> ordDtlNoList = deliveryService.getOrderDtlNoList(ordNoData);
|
|
Collection<Delivery> ordDtlNoList = deliveryService.getOrderDtlNoList(ordNoData);
|
|
|
|
|
+
|
|
|
int ordDtlCnt = 0;
|
|
int ordDtlCnt = 0;
|
|
|
for (Delivery ordDtlNoData : ordDtlNoList) {
|
|
for (Delivery ordDtlNoData : ordDtlNoList) {
|
|
|
|
|
|
|
|
// 주문상세아이템 조회
|
|
// 주문상세아이템 조회
|
|
|
Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(ordDtlNoData);
|
|
Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(ordDtlNoData);
|
|
|
|
|
+
|
|
|
int chkCnt = 0;
|
|
int chkCnt = 0;
|
|
|
for (Delivery item : itemList) {
|
|
for (Delivery item : itemList) {
|
|
|
|
|
+
|
|
|
// WMS 재고체크
|
|
// WMS 재고체크
|
|
|
WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
|
|
WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
|
|
|
|
|
+
|
|
|
if (wmsStock != null) {
|
|
if (wmsStock != null) {
|
|
|
if (wmsStock.getLocQty() >= item.getOrdQty()) {
|
|
if (wmsStock.getLocQty() >= item.getOrdQty()) {
|
|
|
chkCnt = chkCnt + 1;
|
|
chkCnt = chkCnt + 1;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
if (chkCnt == itemList.size()) {
|
|
if (chkCnt == itemList.size()) {
|
|
|
ordDtlCnt = ordDtlCnt + 1;
|
|
ordDtlCnt = ordDtlCnt + 1;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
log.info("ordDtlCnt" + ordDtlCnt + " ordDtlNoList.size() " + ordDtlNoList.size());
|
|
log.info("ordDtlCnt" + ordDtlCnt + " ordDtlNoList.size() " + ordDtlNoList.size());
|
|
|
|
|
+
|
|
|
|
|
+ // 주문상세수량 과 주문상세목록크리가 같으면 창고 출고 (WMS) 아니면 매장출고
|
|
|
|
|
+ // 2021.10.19 전체재고 있으면 출고처 지정하고 END
|
|
|
if (ordDtlCnt == ordDtlNoList.size()) {
|
|
if (ordDtlCnt == ordDtlNoList.size()) {
|
|
|
for (Delivery inOrdDtlNoData : ordDtlNoList) {
|
|
for (Delivery inOrdDtlNoData : ordDtlNoList) {
|
|
|
inOrdDtlNoData.setDelvLocCd(TscConstants.WMS_DELV_LOC_CD);
|
|
inOrdDtlNoData.setDelvLocCd(TscConstants.WMS_DELV_LOC_CD);
|
|
@@ -106,19 +109,22 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
|
|
|
deliveryService.updateTbOrderDtlAssign(inOrdDtlNoData);
|
|
deliveryService.updateTbOrderDtlAssign(inOrdDtlNoData);
|
|
|
|
|
|
|
|
Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(inOrdDtlNoData);
|
|
Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(inOrdDtlNoData);
|
|
|
|
|
+
|
|
|
// wms 재고차감 등록(TB_SELL_QTY)
|
|
// wms 재고차감 등록(TB_SELL_QTY)
|
|
|
for (Delivery data : itemList) {
|
|
for (Delivery data : itemList) {
|
|
|
wmsDeliveryService.insertWmsTbIfDelifixQty(data);
|
|
wmsDeliveryService.insertWmsTbIfDelifixQty(data);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- WmsYn = "N";
|
|
|
|
|
|
|
+
|
|
|
|
|
+ WmsYn = "N"; // WMS 출고처 지정 완료
|
|
|
} else {
|
|
} else {
|
|
|
- ShopYn = "Y";
|
|
|
|
|
|
|
+ ShopYn = "Y"; // WMS의 전체재고 없을 시 매장 재고 체크 허용
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 3. WMS의 주문단위 상품재고가 없을경우 매장재고 체크 후 주문단위 상품이 모두있을경우 해당 매장으로 출고처 지정
|
|
|
|
|
|
|
+ // 3. WMS의 주문단위 상품재고가 없을경우 매장재고 체크 후 주문단위 상품이 모두있을경우 해당 매장으로 출고처 지정
|
|
|
// WMS 창고 출고처 지정 못한 주문건이 존재 매장 출고처 지정
|
|
// WMS 창고 출고처 지정 못한 주문건이 존재 매장 출고처 지정
|
|
|
/*
|
|
/*
|
|
|
|
|
+ // 매장재고체크허용 사은품이 없는 주문
|
|
|
if ("Y".equals(ShopYn) && "N".equals(ordNoData.getGiftyn())) {
|
|
if ("Y".equals(ShopYn) && "N".equals(ordNoData.getGiftyn())) {
|
|
|
|
|
|
|
|
Collection<Delivery> shopOrdDtlNoList = deliveryService.getOrderDtlNoList(ordNoData);
|
|
Collection<Delivery> shopOrdDtlNoList = deliveryService.getOrderDtlNoList(ordNoData);
|
|
@@ -174,15 +180,22 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
*/
|
|
*/
|
|
|
- WmsYn = "Y"; // 직송매장 적용시 삭제
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //WmsYn = "Y"; // 직송매장 적용시 삭제
|
|
|
|
|
+
|
|
|
// 4. 주문상품의 모든재고가 (WMS, 매장) 모두 없을경우 WMS로 출고처지정 (부분배송) 이때 교환은 교환출고예외 테이블에 등록(tb_exchange_delv_fail)
|
|
// 4. 주문상품의 모든재고가 (WMS, 매장) 모두 없을경우 WMS로 출고처지정 (부분배송) 이때 교환은 교환출고예외 테이블에 등록(tb_exchange_delv_fail)
|
|
|
if ("Y".equals(WmsYn)) {
|
|
if ("Y".equals(WmsYn)) {
|
|
|
|
|
+ // 교환주문 STA
|
|
|
if ("E".equals(ordNoData.getOrdExchGb())) {
|
|
if ("E".equals(ordNoData.getOrdExchGb())) {
|
|
|
Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
|
|
Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
|
|
|
|
|
+
|
|
|
for (Delivery chgData : ordDtlNoWmsList) {
|
|
for (Delivery chgData : ordDtlNoWmsList) {
|
|
|
|
|
+
|
|
|
// 주문상세아이템 조회
|
|
// 주문상세아이템 조회
|
|
|
Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(chgData);
|
|
Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(chgData);
|
|
|
int chkCnt = 0;
|
|
int chkCnt = 0;
|
|
|
|
|
+
|
|
|
for (Delivery item : itemList) {
|
|
for (Delivery item : itemList) {
|
|
|
// WMS 재고체크
|
|
// WMS 재고체크
|
|
|
WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
|
|
WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
|
|
@@ -194,16 +207,18 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//chgData.setRegNo(regNo);
|
|
//chgData.setRegNo(regNo);
|
|
|
- chgData.setCnclRtnQty(chgData.getOrdQty() - chkCnt); // 취소수량(재고없는수량)
|
|
|
|
|
- // insert
|
|
|
|
|
|
|
+ chgData.setCnclRtnQty(chgData.getOrdQty() - chkCnt); // 취소수량(재고없는수량)
|
|
|
|
|
+
|
|
|
|
|
+ // insert
|
|
|
deliveryService.insertTbExchangeDelvFail(chgData);
|
|
deliveryService.insertTbExchangeDelvFail(chgData);
|
|
|
-
|
|
|
|
|
- // ddddd
|
|
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- } else {
|
|
|
|
|
- if ("NAVER_ORDER".equals(ordNoData.getPgGb())) { // 네이버 주문형
|
|
|
|
|
-
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ // 교환주문 END
|
|
|
|
|
+ // 일반주문 STA
|
|
|
|
|
+ else {
|
|
|
|
|
+ // NAVER_ORDER STA
|
|
|
|
|
+ if ("NAVER_ORDER".equals(ordNoData.getPgGb())) {
|
|
|
|
|
+
|
|
|
// 주문상세번호 조회
|
|
// 주문상세번호 조회
|
|
|
Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
|
|
Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
|
|
|
|
|
|
|
@@ -225,7 +240,6 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
|
|
|
wmsOrdDtlData.setDelvLocCd(TscConstants.WMS_DELV_LOC_CD);
|
|
wmsOrdDtlData.setDelvLocCd(TscConstants.WMS_DELV_LOC_CD);
|
|
|
|
|
|
|
|
// 출고처등록 및 history 등록 (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST)
|
|
// 출고처등록 및 history 등록 (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST)
|
|
|
-
|
|
|
|
|
//log.info("네이버주문형Y DTL_NO"+ wmsOrdDtlData.getOrdDtlNo());
|
|
//log.info("네이버주문형Y DTL_NO"+ wmsOrdDtlData.getOrdDtlNo());
|
|
|
wmsOrdDtlData.setDelvArGb("Y"); // 수락
|
|
wmsOrdDtlData.setDelvArGb("Y"); // 수락
|
|
|
wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty());
|
|
wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty());
|
|
@@ -249,13 +263,18 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
|
|
|
deliveryService.saveDeliveryAssign(wmsOrdDtlData);
|
|
deliveryService.saveDeliveryAssign(wmsOrdDtlData);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- } else { // 일반
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ // NAVER_ORDER END
|
|
|
|
|
+ // 일반 주문 STA
|
|
|
|
|
+ else {
|
|
|
//log.info("last:"+ordNoData.getOrdNo());
|
|
//log.info("last:"+ordNoData.getOrdNo());
|
|
|
|
|
+
|
|
|
// 주문상세번호 조회
|
|
// 주문상세번호 조회
|
|
|
Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
|
|
Collection<Delivery> ordDtlNoWmsList = deliveryService.getOrderDtlNoList(ordNoData);
|
|
|
int chkCnt = 0;
|
|
int chkCnt = 0;
|
|
|
|
|
+
|
|
|
for (Delivery wmsOrdDtlData : ordDtlNoWmsList) {
|
|
for (Delivery wmsOrdDtlData : ordDtlNoWmsList) {
|
|
|
-
|
|
|
|
|
|
|
+ // 세트상품
|
|
|
if ("G056_S".equals(wmsOrdDtlData.getGoodsType())) {
|
|
if ("G056_S".equals(wmsOrdDtlData.getGoodsType())) {
|
|
|
|
|
|
|
|
// 주문상세아이템 조회
|
|
// 주문상세아이템 조회
|
|
@@ -271,14 +290,18 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
if (setCnt == itemList.size()) {
|
|
if (setCnt == itemList.size()) {
|
|
|
chkCnt = chkCnt + 1;
|
|
chkCnt = chkCnt + 1;
|
|
|
}
|
|
}
|
|
|
- } else {
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ // 일반상품
|
|
|
|
|
+ else {
|
|
|
// 주문상세아이템 조회
|
|
// 주문상세아이템 조회
|
|
|
Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
|
|
Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
|
|
|
|
|
|
|
|
for (Delivery item : itemList) {
|
|
for (Delivery item : itemList) {
|
|
|
|
|
+
|
|
|
// WMS 재고체크
|
|
// WMS 재고체크
|
|
|
WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
|
|
WmsDelivery wmsStock = deliveryService.getWmsRealStockChk(item);
|
|
|
if (wmsStock != null) {
|
|
if (wmsStock != null) {
|
|
@@ -288,13 +311,13 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
if (chkCnt > 0) {
|
|
if (chkCnt > 0) {
|
|
|
for (Delivery wmsOrdDtlData : ordDtlNoList) {
|
|
for (Delivery wmsOrdDtlData : ordDtlNoList) {
|
|
|
-
|
|
|
|
|
// log.info("라스트 N DTL_NO"+ wmsOrdDtlData.getOrdDtlNo());
|
|
// log.info("라스트 N DTL_NO"+ wmsOrdDtlData.getOrdDtlNo());
|
|
|
wmsOrdDtlData.setDelvLocCd(TscConstants.WMS_DELV_LOC_CD);
|
|
wmsOrdDtlData.setDelvLocCd(TscConstants.WMS_DELV_LOC_CD);
|
|
|
|
|
+
|
|
|
// 출고처등록 및 history 등록 (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST)
|
|
// 출고처등록 및 history 등록 (TB_DELIVERY_ASSIGN & TB_DELIVERY_ASSIGN_HST)
|
|
|
wmsOrdDtlData.setDelvArGb("Y"); // 수락
|
|
wmsOrdDtlData.setDelvArGb("Y"); // 수락
|
|
|
wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty());
|
|
wmsOrdDtlData.setLocQty(wmsOrdDtlData.getOrdQty());
|
|
@@ -307,6 +330,7 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
|
|
|
|
|
|
|
|
// 주문상세아이템 조회
|
|
// 주문상세아이템 조회
|
|
|
Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
|
|
Collection<Delivery> itemList = deliveryService.getOrderDtlItemList(wmsOrdDtlData);
|
|
|
|
|
+
|
|
|
// wms 재고차감 등록(TB_SELL_QTY)
|
|
// wms 재고차감 등록(TB_SELL_QTY)
|
|
|
for (Delivery data : itemList) {
|
|
for (Delivery data : itemList) {
|
|
|
wmsDeliveryService.insertWmsTbIfDelifixQty(data);
|
|
wmsDeliveryService.insertWmsTbIfDelifixQty(data);
|
|
@@ -325,6 +349,7 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ // 일반주문 END
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
@@ -336,17 +361,20 @@ public class TsbDeliveryOrderJob extends TsbAbstractJob<Collection<Delivery>, Co
|
|
|
// wms 출고처 지정 대상 조회
|
|
// wms 출고처 지정 대상 조회
|
|
|
// 사은품 조회 차후 작업!!!!
|
|
// 사은품 조회 차후 작업!!!!
|
|
|
Collection<Delivery> ordList = deliveryService.getWmsDeliveryOrdNoList();
|
|
Collection<Delivery> ordList = deliveryService.getWmsDeliveryOrdNoList();
|
|
|
|
|
+
|
|
|
for (Delivery ordData : ordList) {
|
|
for (Delivery ordData : ordList) {
|
|
|
try {
|
|
try {
|
|
|
// wms 출고 정보 조회(mall_DB)
|
|
// wms 출고 정보 조회(mall_DB)
|
|
|
- Collection<Delivery> wmsDelvList = deliveryService.getWmsDeliveryList(ordData);
|
|
|
|
|
- Collection<Delivery> giftList = deliveryService.getWmsDeliveryGiftList(ordData);
|
|
|
|
|
|
|
+ Collection<Delivery> wmsDelvList = deliveryService.getWmsDeliveryList(ordData);
|
|
|
|
|
+ Collection<Delivery> giftList = deliveryService.getWmsDeliveryGiftList(ordData);
|
|
|
|
|
+
|
|
|
// wms 출고 정보 등록 (wms_DB)
|
|
// wms 출고 정보 등록 (wms_DB)
|
|
|
wmsDeliveryService.insertWmsDelivery(wmsDelvList, giftList);
|
|
wmsDeliveryService.insertWmsDelivery(wmsDelvList, giftList);
|
|
|
|
|
|
|
|
// 주문상세상태 변경 상품준비중~
|
|
// 주문상세상태 변경 상품준비중~
|
|
|
String statGb = "PREPARE";
|
|
String statGb = "PREPARE";
|
|
|
deliveryService.updateTbOrderDtlStat(wmsDelvList, statGb);
|
|
deliveryService.updateTbOrderDtlStat(wmsDelvList, statGb);
|
|
|
|
|
+
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
log.debug("TsbDeliveryOrderJob insertWmsDelivery " + e.getStackTrace().toString());
|
|
log.debug("TsbDeliveryOrderJob insertWmsDelivery " + e.getStackTrace().toString());
|
|
|
}
|
|
}
|