Browse Source

调整分批发货传输数据的结构

yujia 7 years ago
parent
commit
d4b803fc7a

+ 2 - 2
src/main/java/com/uas/platform/b2c/logistics/service/InvoiceFPurchaseService.java

@@ -49,10 +49,10 @@ public interface InvoiceFPurchaseService {
 	 * 采购转出货
 	 *
 	 * @param purchase the puid 采购单号\
-	 * @param map 发货信息
+	 * @param list 发货信息
 	 * @return InvoiceFPurchase 返回InvoiceFPurchase对象
 	 */
-	InvoiceFPurchase createInvoiceFPurchase(Purchase purchase, Map<Long, Double> map);
+	InvoiceFPurchase createInvoiceFPurchase(Purchase purchase, List<Map<String, Object>> list);
 
 	/**
 	 * 查找待出货

+ 21 - 7
src/main/java/com/uas/platform/b2c/logistics/service/impl/InvoiceFOrderServiceImpl.java

@@ -11,6 +11,7 @@ import com.uas.platform.b2c.core.support.log.TradeBufferedLogger;
 import com.uas.platform.b2c.core.utils.DoubleArith;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.core.utils.NumberUtil;
+import com.uas.platform.b2c.core.utils.StringUtilB2C;
 import com.uas.platform.b2c.logistics.dao.InvoiceFOrderDao;
 import com.uas.platform.b2c.logistics.model.InvoiceFOrder;
 import com.uas.platform.b2c.logistics.model.InvoiceFOrderDetail;
@@ -40,7 +41,7 @@ import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.platform.core.persistence.criteria.SimpleExpression;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
-import org.apache.commons.collections.MapUtils;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
@@ -351,12 +352,12 @@ public class InvoiceFOrderServiceImpl implements InvoiceFOrderService {
 		if (org.apache.commons.lang.StringUtils.isEmpty(shipList)) {
 			return new ResultMap(CodeType.NO_INFO, "发货明细缺失");
 		}
-		Map<Long, Double> map = FlexJsonUtils.fromJson(shipList, Map.class);
-		if (MapUtils.isEmpty(map)) {
+		List<Map<String, Object>> list = FlexJsonUtils.fromJsonArray(shipList, Map.class);
+		if (CollectionUtils.isEmpty(list)) {
 			return new ResultMap(CodeType.NO_INFO, "发货明细缺失");
 		}
 		InvoiceFOrder thisFor = null;
-		ResultMap resultMap = createInvoiceFromOrder(order, map);
+		ResultMap resultMap = createInvoiceFromOrder(order, list);
 		if (resultMap.getCode() == CodeType.OK.code()) {
 			thisFor = (InvoiceFOrder) resultMap.getData();
 		} else {
@@ -452,11 +453,11 @@ public class InvoiceFOrderServiceImpl implements InvoiceFOrderService {
 	 * @param order	订单
 	 * @param order 需要发货的订单
 	 */
-	private ResultMap createInvoiceFromOrder(Order order, Map<Long, Double> map) {
+	private ResultMap createInvoiceFromOrder(Order order, List<Map<String, Object>> list) {
 		if (order == null) {
 			return new ResultMap(CodeType.NO_INFO, "找不到对应订单");
 		}
-		if (MapUtils.isEmpty(map)) {
+		if (CollectionUtils.isEmpty(list)) {
 			return new ResultMap(CodeType.NO_INFO, "发货明细为空");
 		}
 		Long userUU = SystemSession.getUser().getUserUU();
@@ -474,7 +475,20 @@ public class InvoiceFOrderServiceImpl implements InvoiceFOrderService {
 		Double qty = 0.0d;
 		for (OrderDetail orDetail : order.getOrderDetails()) {
 			qty = 0.0d;
-			qty = map.get(orDetail.getId());
+			for (Map<String, Object> map : list) {
+				Object id = map.get("id");
+				if (StringUtilB2C.isEmpty(id)) {
+					continue;
+				}
+				if (Long.valueOf(id.toString()).longValue() == orDetail.getId().longValue()) {
+					Object qty1 = map.get("qty");
+					if (StringUtilB2C.isEmpty(qty1)) {
+						continue;
+					}
+					qty = Double.valueOf(qty1.toString());
+					break;
+				}
+			}
 			if ((Status.SHIPPED.value() != orDetail.getStatus()) || (NumberUtil.compare(qty, DoubleConstant.zero) < 1)) {
 				continue;
 			}

+ 18 - 9
src/main/java/com/uas/platform/b2c/logistics/service/impl/InvoiceFPurchaseServiceImpl.java

@@ -50,7 +50,6 @@ import com.uas.platform.core.persistence.criteria.SimpleExpression;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import com.uas.sso.util.FlexJsonUtil;
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
@@ -220,15 +219,15 @@ public class InvoiceFPurchaseServiceImpl implements InvoiceFPurchaseService {
 	 * 采购转出货
 	 *
 	 * @param purchase     the puid 采购单号\
-	 * @param map
+	 * @param list
 	 * @return InvoiceFPurchase 返回InvoiceFPurchase对象
 	 */
 	@Override
-	public InvoiceFPurchase createInvoiceFPurchase(Purchase purchase, Map<Long, Double> map) {
+	public InvoiceFPurchase createInvoiceFPurchase(Purchase purchase, List<Map<String, Object>> list) {
 		if (purchase == null) {
 			throw new IllegalOperatorException("传入信息为空");
 		}
-		if (MapUtils.isEmpty(map)) {
+		if (CollectionUtils.isEmpty(list)) {
 			throw new IllegalOperatorException("发货明细为空");
 		}
 		if (purchase.getStatus() != Status.TOBESHIPPED.value() && purchase.getStatus() != Status.CONFIRMED.value()) {
@@ -268,7 +267,19 @@ public class InvoiceFPurchaseServiceImpl implements InvoiceFPurchaseService {
 		for (PurchaseDetail puDetail : purchase.getPurchaseDetails()) {
 			// 如果当前采购单明细的状态不是待出货状态,则处理下一条明细是否转出货
 			qty = 0.0d;
-			qty = map.get(puDetail.getId());
+			for (Map<String, Object> map : list) {
+				Object id = map.get("id");
+				if (StringUtilB2C.isEmpty(id)) {
+					continue;
+				}
+				if (Long.valueOf(id.toString()).longValue() == puDetail.getId().longValue()) {
+					Object qty1 = map.get("qty");
+					if (StringUtilB2C.isEmpty(qty1)) {
+						continue;
+					}
+					qty = Double.valueOf(qty1.toString());
+				}
+			}
 			if (Status.TOBESHIPPED.value() != puDetail.getStatus() || NumberUtil.compare(qty, DoubleConstant.zero) < 1) {
 				continue;
 			}
@@ -652,8 +663,8 @@ public class InvoiceFPurchaseServiceImpl implements InvoiceFPurchaseService {
 		if (org.apache.commons.lang.StringUtils.isEmpty(shipStr)) {
 			return new ResultMap(CodeType.NO_INFO, "发货明细缺失");
 		}
-		Map<Long, Double> map = FlexJsonUtils.fromJson(shipStr, Map.class);
-		InvoiceFPurchase invoiceFPurchase = createInvoiceFPurchase(purchase, map);
+		List<Map<String, Object>> list = FlexJsonUtils.fromJsonArray(shipStr, Map.class);
+		InvoiceFPurchase invoiceFPurchase = createInvoiceFPurchase(purchase, list);
 		Integer sendType = Integer.parseInt(jObj.getString("sendType"));
 
 		if (sendType == null){
@@ -724,6 +735,4 @@ public class InvoiceFPurchaseServiceImpl implements InvoiceFPurchaseService {
 		purchaseDao.save(purchase);
 		return ResultMap.success("ok");
 	}
-
-
 }