Просмотр исходного кода

出库记录关联物流信息。

yujia 7 лет назад
Родитель
Сommit
d862494ac9

+ 3 - 0
src/main/java/com/uas/platform/b2c/logistics/controller/InvoiceController.java

@@ -23,6 +23,9 @@ import java.util.List;
  *
  * @author aof
  * @date 2016年3月13日 上午9:29:33
+ *
+ * @author yuj,yuj@usoftchina.com
+ * 于 2018-9-6 20:10:25 开始,所有的发货单,统一用invoice对象保存
  */
 @RestController
 @RequestMapping("/trade/invoice")

+ 0 - 1
src/main/java/com/uas/platform/b2c/logistics/model/Invoice.java

@@ -31,7 +31,6 @@ import java.util.Set;
  * 
  * @author aof
  * @date 2016年3月11日 上午10:15:52
- *
  */
 @Entity
 @Table(name = "trade$invoice")

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

@@ -261,9 +261,7 @@ public class InvoiceFPurchaseServiceImpl implements InvoiceFPurchaseService {
 
 		// 给明细赋值
 		Double qty = 0.0d;
-		Set<InOutboundDetail> inOutSet = new HashSet<>();
 		Product product = null;
-		InOutboundDetail inOutboundDetail = null;
 		for (PurchaseDetail puDetail : purchase.getPurchaseDetails()) {
 			// 如果当前采购单明细的状态不是待出货状态,则处理下一条明细是否转出货
 			qty = 0.0d;
@@ -304,9 +302,6 @@ public class InvoiceFPurchaseServiceImpl implements InvoiceFPurchaseService {
 			product.setErpReserve(NumberUtil.sub(product.getErpReserve(), qty));
 			productService.save(product);
 
-			inOutboundDetail = new InOutboundDetail(product, puDetail, qty);
-			inOutSet.add(inOutboundDetail);
-
 			InvoiceFPurchaseDetail inFpuD = new InvoiceFPurchaseDetail(puDetail, qty);
 			String detailId = createNumberService.generateVoucherId(EncodingRulesConstant.INVOICE_DETAIL_FROMPURCHASE,
 					"trade$invoice_fmpu_dt", 9);
@@ -349,13 +344,6 @@ public class InvoiceFPurchaseServiceImpl implements InvoiceFPurchaseService {
 		inFpu.setInfpuRemark(purchase.getPurchaseRemark());
 		inFpu.setSendType(purchase.getSendType());
 		inFpu.setInvoiceFPurchaseDetails(IpDetails);
-
-		if (CollectionUtils.isNotEmpty(inOutSet)){
-			CommodityInOutbound commodityInOutbound = commodityInOutboundService.produceCommodityInOutbound(inOutSet, InOutBoundType.SELL_OUTBOUND);
-			if (commodityInOutbound != null) {
-				commodityInOutboundService.save(commodityInOutbound);
-			}
-		}
 		// 设置采购单关联属性
 		purchase.addInid(inFpu.getInvoiceid());
 		return inFpu;
@@ -688,7 +676,7 @@ public class InvoiceFPurchaseServiceImpl implements InvoiceFPurchaseService {
 		}
 
 		JSONObject  logisticsJson = jObj.getJSONObject("logisticsInfo");
-		if (logisticsJson != null){
+		if (logisticsJson != null) {
 			Logistics logistics = logisticsService.bornLogisticsByCompanyNameAndNum(logisticsJson.getString("companyName"), logisticsJson.getString("number"));
 			invoiceFPurchase.setLogistics(logistics);
 		}
@@ -718,9 +706,9 @@ public class InvoiceFPurchaseServiceImpl implements InvoiceFPurchaseService {
 		purchase.setSendName(SystemSession.getUser().getUserName());
 		purchase.setSenduu(SystemSession.getUser().getUserUU());
 		purchase.setSendTime(new Date());
-		//如果不是优软商城店铺,则代表店铺直售
 		Order order = null;
 		Double qty = 0.0d;
+		//如果不是优软商城店铺,则代表店铺直售
 		if(!purchase.getStoreid().equals(sysConf.getStoreid())) {
 			order = orderDao.findByOrderid(purchase.getOrderid());
 			order.addInInds(inFpu.getInvoiceid());
@@ -759,6 +747,18 @@ public class InvoiceFPurchaseServiceImpl implements InvoiceFPurchaseService {
 			purchase.setStatusInBound(userUU);
 		}
 		purchaseDao.save(purchase);
+		String orderid = "";
+		Long orderId = null;
+		if (order != null) {
+			orderid = order.getOrderid();
+			orderId = order.getId();
+		}
+		String purchaseid = purchase.getPurchaseid();
+		Long purchaseId = purchase.getId();
+		CommodityInOutbound commodityInOutbound = commodityInOutboundService.sellOutBound(inFpu, orderid, orderId, purchaseid, purchaseId);
+		if (commodityInOutbound != null) {
+			commodityInOutboundService.save(commodityInOutbound);
+		}
 		return ResultMap.success("ok");
 	}
 

+ 11 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/controller/CommodityInOutboundController.java

@@ -56,4 +56,15 @@ public class CommodityInOutboundController {
     public Page<CommodityInOutbound> getCommodityInOutboundByPage(PageParams params, String keyword, String type, Long fromDate, Long toDate) {
         return commodityInOutboundService.getCommodityInOutboundByPage(params, keyword, type, fromDate, toDate);
     }
+
+
+    /**
+     * 根据出入库id,获取出入库信息
+     * @param id id信息
+     * @return ResultMap
+     */
+    @RequestMapping(value = "/id", method = RequestMethod.GET)
+    public ResultMap findCommodityInOutboundById(Long id) {
+        return commodityInOutboundService.findCommodityInOutboundById(id);
+    }
 }

+ 21 - 8
src/main/java/com/uas/platform/b2c/prod/commodity/model/CommodityInOutbound.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2c.prod.commodity.model;
 
 import com.uas.platform.b2c.core.support.SystemSession;
+import com.uas.platform.b2c.logistics.model.Logistics;
 import com.uas.platform.b2c.prod.commodity.type.InOutBoundType;
 import org.apache.commons.lang.StringUtils;
 
@@ -107,19 +108,22 @@ public class CommodityInOutbound implements Serializable {
      * 关联的销售单id
      */
     @Column(name = "cio_associate_purchase_id")
-    private String associatePurchaseId;
+    private Long associatePurchaseId;
 
     /**
-     * 出货单单号
+     * 出货单单号 必填
      */
     @Column(name = "cio_associate_invoiceid")
     private String associateInvoiceid;
 
     /**
-     * 出货单id
+     * 出货单id 必填
      */
     @Column(name = "cio_associate_invoice_id")
-    private String associateInvoiceId;
+    private Long associateInvoiceId;
+
+    @Transient
+    private Logistics logistics;
 
     /**
      * 订单明细
@@ -250,11 +254,11 @@ public class CommodityInOutbound implements Serializable {
         return this;
     }
 
-    public String getAssociatePurchaseId() {
+    public Long getAssociatePurchaseId() {
         return associatePurchaseId;
     }
 
-    public CommodityInOutbound setAssociatePurchaseId(String associatePurchaseId) {
+    public CommodityInOutbound setAssociatePurchaseId(Long associatePurchaseId) {
         this.associatePurchaseId = associatePurchaseId;
         return this;
     }
@@ -268,15 +272,24 @@ public class CommodityInOutbound implements Serializable {
         return this;
     }
 
-    public String getAssociateInvoiceId() {
+    public Long getAssociateInvoiceId() {
         return associateInvoiceId;
     }
 
-    public CommodityInOutbound setAssociateInvoiceId(String associateInvoiceId) {
+    public CommodityInOutbound setAssociateInvoiceId(Long associateInvoiceId) {
         this.associateInvoiceId = associateInvoiceId;
         return this;
     }
 
+    public Logistics getLogistics() {
+        return logistics;
+    }
+
+    public CommodityInOutbound setLogistics(Logistics logistics) {
+        this.logistics = logistics;
+        return this;
+    }
+
     public CommodityInOutbound() {
     }
 

+ 18 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/model/InOutboundDetail.java

@@ -86,6 +86,12 @@ public class InOutboundDetail implements Serializable {
     @Column(name = "iobd_price")
     private Double price;
 
+    /**
+     * 币别信息
+     */
+    @Column(name = "iobd_currency")
+    private String currency;
+
     /**
      * 序号
      */
@@ -99,7 +105,7 @@ public class InOutboundDetail implements Serializable {
     private Long productId;
 
     /**
-     * 来源id的主键
+     * 来源id的主键 对应出货单的id
      */
     @Column(name = "iobc_sourceid")
     private Long sourceid;
@@ -242,6 +248,15 @@ public class InOutboundDetail implements Serializable {
         return this;
     }
 
+    public String getCurrency() {
+        return currency;
+    }
+
+    public InOutboundDetail setCurrency(String currency) {
+        this.currency = currency;
+        return this;
+    }
+
     public InOutboundDetail() {
     }
 
@@ -258,6 +273,7 @@ public class InOutboundDetail implements Serializable {
         this.qty = detail.getNumber();
         this.price = detail.getPrice();
         this.productId = detail.getProductid();
+        this.sourceid = detail.getId();
     }
 
     public InOutboundDetail(InvoiceFPurchaseDetail detail) {
@@ -273,6 +289,7 @@ public class InOutboundDetail implements Serializable {
         this.qty = detail.getNumber();
         this.price = detail.getPrice();
         this.productId = detail.getProductid();
+        this.sourceid = detail.getId();
     }
 
     public InOutboundDetail(Product product, PurchaseDetail detail, Double qty) {

+ 20 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/service/CommodityInOutboundService.java

@@ -1,5 +1,6 @@
 package com.uas.platform.b2c.prod.commodity.service;
 
+import com.uas.platform.b2c.logistics.model.InvoiceFPurchase;
 import com.uas.platform.b2c.prod.commodity.model.CommodityInOutbound;
 import com.uas.platform.b2c.prod.commodity.model.InOutboundDetail;
 import com.uas.platform.b2c.trade.order.model.Order;
@@ -70,4 +71,23 @@ public interface CommodityInOutboundService {
      * @return
      */
     Page<CommodityInOutbound> getCommodityInOutboundByPage(PageParams params, String keyword, String type, Long fromDate, Long toDate);
+
+
+    /**
+     * 根据出入库id,获取出入库信息
+     * @param id id信息
+     * @return ResultMap
+     */
+    ResultMap findCommodityInOutboundById(Long id);
+
+    /**
+     * 根据发货单,保存出货信息
+     * @param invoiceFPurchase 发货单
+     * @param orderid 出货的采购单号
+     * @param orderId 出货的采购id
+     * @param purchaseid 出货的销售单单号
+     * @param purchaseId 出货的销售单id
+     * @return CommodityInOutbound
+     */
+    CommodityInOutbound sellOutBound(InvoiceFPurchase invoiceFPurchase, String orderid, Long orderId, String purchaseid, Long purchaseId);
 }

+ 68 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/CommodityInOutboundServiceImpl.java

@@ -3,6 +3,9 @@ package com.uas.platform.b2c.prod.commodity.service.impl;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.utils.NumberUtil;
 import com.uas.platform.b2c.core.utils.StringUtilB2C;
+import com.uas.platform.b2c.logistics.model.InvoiceFPurchase;
+import com.uas.platform.b2c.logistics.model.InvoiceFPurchaseDetail;
+import com.uas.platform.b2c.logistics.service.InvoiceFPurchaseService;
 import com.uas.platform.b2c.prod.commodity.constant.DoubleConstant;
 import com.uas.platform.b2c.prod.commodity.dao.CommodityInOutboundDao;
 import com.uas.platform.b2c.prod.commodity.model.CommodityInOutbound;
@@ -53,6 +56,9 @@ public class CommodityInOutboundServiceImpl implements CommodityInOutboundServic
 
     private final InOutboundDetailService inOutboundDetailService;
 
+    @Autowired
+    private InvoiceFPurchaseService invoiceFPurchaseService;
+
     @Autowired
     public CommodityInOutboundServiceImpl(CommodityInOutboundDao commodityInOutboundDao, CreateNumberService createNumberService, ProductService productService, InOutboundDetailService inOutboundDetailService) {
         this.commodityInOutboundDao = commodityInOutboundDao;
@@ -135,6 +141,7 @@ public class CommodityInOutboundServiceImpl implements CommodityInOutboundServic
             inOutbound.setAffiliatedEnterprise(order.getBuyername());
         }
         inOutbound.setAssociateOrderid(order.getOrderid());
+        inOutbound.setAssociateOrderId(order.getId());
         CommodityInOutbound commodityInOutbound = save(inOutbound);
         return commodityInOutbound;
     }
@@ -268,4 +275,65 @@ public class CommodityInOutboundServiceImpl implements CommodityInOutboundServic
             }
         }, info);
     }
+
+    /**
+     * 根据出入库id,获取出入库信息
+     *
+     * @param id id信息
+     * @return ResultMap
+     */
+    @Override
+    public ResultMap findCommodityInOutboundById(Long id) {
+        if (id == null) {
+            return new ResultMap(CodeType.NO_INFO, "请传入主键信息");
+        } else {
+            CommodityInOutbound commodityInOutbound = commodityInOutboundDao.findOne(id);
+            if (InOutBoundType.SELL_OUTBOUND.equals(commodityInOutbound.getOpertatorType())) {
+                if (commodityInOutbound.getAssociateInvoiceId() != null) {
+                    InvoiceFPurchase invoiceFPurchase = invoiceFPurchaseService.findById(commodityInOutbound.getAssociateInvoiceId());
+                    if (invoiceFPurchase != null) {
+                        commodityInOutbound.setLogistics(invoiceFPurchase.getLogistics());
+                    }
+                }
+            }
+            return ResultMap.success(commodityInOutbound);
+        }
+    }
+
+    /**
+     * 根据发货单,保存出货信息
+     *
+     * @param invoiceFPurchase 发货单
+     * @param orderid          出货的采购单号
+     * @param orderId          出货的采购id
+     * @param purchaseid       出货的销售单单号
+     * @param purchaseId       出货的销售单id
+     * @return CommodityInOutbound
+     */
+    @Override
+    public CommodityInOutbound sellOutBound(InvoiceFPurchase invoiceFPurchase, String orderid, Long orderId, String purchaseid, Long purchaseId) {
+        if (invoiceFPurchase == null) {
+            return null;
+        }
+        InOutboundDetail inOutboundDetail = null;
+        Set<InOutboundDetail> inOutSet = new HashSet<>();
+        Set<InvoiceFPurchaseDetail> fPurchaseDetails = invoiceFPurchase.getInvoiceFPurchaseDetails();
+        for (InvoiceFPurchaseDetail fPurchaseDetail : fPurchaseDetails) {
+            inOutboundDetail = new InOutboundDetail(fPurchaseDetail);
+            inOutSet.add(inOutboundDetail);
+        }
+
+        if (CollectionUtils.isNotEmpty(inOutSet)){
+            CommodityInOutbound commodityInOutbound = produceCommodityInOutbound(inOutSet, InOutBoundType.SELL_OUTBOUND);
+            commodityInOutbound.setAssociateOrderid(orderid);
+            commodityInOutbound.setAssociateOrderId(orderId);
+            commodityInOutbound.setAssociatePurchaseid(purchaseid);
+            commodityInOutbound.setAssociatePurchaseId(purchaseId);
+            commodityInOutbound.setAssociateInvoiceId(invoiceFPurchase.getId());
+            commodityInOutbound.setAssociateInvoiceid(invoiceFPurchase.getInvoiceid());
+            return commodityInOutbound;
+        } else {
+            return null;
+        }
+    }
 }