Browse Source

Merge remote-tracking branch 'origin/feature-0827-hj' into dev

Hu Jie 7 years ago
parent
commit
714d5585ff

+ 23 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseAcceptItemDao.java

@@ -7,6 +7,9 @@ import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.Date;
+import java.util.List;
+
 /**
  * 采购验收单
  * 
@@ -28,4 +31,24 @@ public interface PurchaseAcceptItemDao extends JpaSpecificationExecutor<Purchase
 	@Query("from PurchaseAcceptItem i where i.accept.enUU = :enUU and i.accept.code = :code and i.number = :number")
 	PurchaseAcceptItem findByEnUUAndCodeAndNumber(@Param("enUU") Long enUU, @Param("code") String code,
 			@Param("number") Short number);
+
+	/**
+	 * 根据企业enUU获取当前企业最近三个月(订单时间or验收单时间?)有验收单的数据,只返回有验收单的订单和订单明细
+	 * @param enUU
+	 * @param needStartDate
+	 * @param needEndDate
+	 * @return
+	 */
+	@Query("from PurchaseAcceptItem p where p.accept.enUU = :enUU and p.orderItem.order.date >= :startDate and p.orderItem.order.date <= :endDate")
+	List<PurchaseAcceptItem> findPurcAccsptItems(@Param("enUU") Long enUU, @Param("startDate") Date needStartDate, @Param("endDate") Date needEndDate);
+
+
+	/**
+	 * 根据验收单明细ID获取数据
+	 * @param enUU
+	 * @param ids
+	 * @return
+	 */
+	@Query("from PurchaseAcceptItem p where p.accept.enUU = :enUU and p.id in :ids")
+	List<PurchaseAcceptItem> findPurcAcceptByItemIds(@Param("enUU") Long enUU,@Param("ids") List<Long> ids);
 }

+ 74 - 0
src/main/java/com/uas/platform/b2b/openapi/controller/UsoftFxController.java

@@ -0,0 +1,74 @@
+package com.uas.platform.b2b.openapi.controller;
+
+import com.uas.platform.b2b.openapi.model.FxPurOrder;
+import com.uas.platform.b2b.openapi.model.FxPurcAcceptItem;
+import com.uas.platform.b2b.openapi.service.UsoftFxService;
+import org.apache.commons.beanutils.ConvertUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.*;
+
+/**
+ * 金控项目B2B订单数据接口
+ * @Author: huj
+ * @Date: Created in 9:15 2018/8/27.
+ */
+@RestController
+@RequestMapping("/api/puchase")
+public class UsoftFxController {
+
+    @Autowired
+    UsoftFxService usoftFxService;
+
+    /**
+     * 根据企业enUU获取当前企业最近三个月(订单时间or验收单时间?)有验收单的数据
+     * @param enUU
+     * @param excludeAcceptItemIds
+     * @param startDate
+     * @param endDate
+     * @throws UnsupportedEncodingException
+     * return 返回有验收单的订单和订单明细
+     */
+    @RequestMapping(value = "/orders/withAccepts",method = RequestMethod.GET)
+    @ResponseBody
+    public List<FxPurOrder> getPurcAcceptItems(@RequestParam("enUU") Long enUU,@RequestParam(value = "excludeAcceptItemIds",required = false) String excludeAcceptItemIds,
+                                   @RequestParam(value = "startDate",required = false) Long startDate,
+                                   @RequestParam(value = "endDate",required = false) Long endDate) throws UnsupportedEncodingException {
+        String acceptItems = null;
+        if (!StringUtils.isEmpty(excludeAcceptItemIds)) {
+            acceptItems = URLDecoder.decode(excludeAcceptItemIds,"UTF-8");
+        }
+        List<Long> excludeItemsIds = new ArrayList<>();
+        if (!StringUtils.isEmpty(acceptItems)) {
+            Long[] longs = (Long[]) ConvertUtils.convert(acceptItems.split(","),Long.class);
+            excludeItemsIds = Arrays.asList(longs);
+        }
+        Date date = new Date();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.MONTH,-3);
+        date = calendar.getTime();
+        Date needStartDate = startDate == null ? date : new Date(startDate);
+        Date needEndDate = endDate == null ? new Date() : new Date(endDate);
+        List<FxPurOrder> fxPurOrders = usoftFxService.getPurcAccsptItems(enUU,excludeItemsIds,needStartDate,needEndDate);
+        return fxPurOrders;
+    }
+
+    /**
+     * 根据验收单的明细获取对应的验收单数据
+     * @param enUU
+     * @param acceptItemIds
+     * @return
+     * @throws UnsupportedEncodingException
+     */
+    @RequestMapping(value = "/acceptItems",method = RequestMethod.GET)
+    @ResponseBody
+    public List<FxPurcAcceptItem> getPurcAcceptByItemIds(@RequestParam("enUU") Long enUU, @RequestParam("acceptItemIds") String acceptItemIds) throws UnsupportedEncodingException{
+        List<Long> ids = Arrays.asList((Long[]) ConvertUtils.convert(acceptItemIds.split(","),Long.class));
+        return usoftFxService.getPurcAcceptByItemIds(enUU,ids);
+    }
+}

+ 119 - 0
src/main/java/com/uas/platform/b2b/openapi/model/FxPurOrder.java

@@ -0,0 +1,119 @@
+package com.uas.platform.b2b.openapi.model;
+
+import com.uas.platform.b2b.model.PurchaseAcceptItem;
+import com.uas.platform.b2b.model.PurchaseOrder;
+import com.uas.platform.b2b.model.PurchaseOrderItem;
+
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @Author: huj
+ * @Date: Created in 11:26 2018/8/27.
+ */
+public class FxPurOrder {
+    /**
+     * 订单id
+     */
+    private Long id;
+    /**
+     * 订单编号
+     */
+    private String orderCode;
+    /**
+     * 客户企业名称
+     */
+    private String custName;
+    /**
+     * 客户企业UU号
+     */
+    private Long custUU;
+    /**
+     * 订单总金额
+     */
+    private Double total;
+    /**
+     * 订单时间
+     */
+    private Date date;
+    private Set<FxPurcOrderItem> orderItems = new HashSet<>();
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getOrderCode() {
+        return orderCode;
+    }
+
+    public void setOrderCode(String orderCode) {
+        this.orderCode = orderCode;
+    }
+
+    public String getCustName() {
+        return custName;
+    }
+
+    public void setCustName(String custName) {
+        this.custName = custName;
+    }
+
+    public Long getCustUU() {
+        return custUU;
+    }
+
+    public void setCustUU(Long custUU) {
+        this.custUU = custUU;
+    }
+
+    public Double getTotal() {
+        return total;
+    }
+
+    public void setTotal(Double total) {
+        this.total = total;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public Set<FxPurcOrderItem> getOrderItems() {
+        return orderItems;
+    }
+
+    public void setOrderItems(Set<FxPurcOrderItem> orderItems) {
+        this.orderItems = orderItems;
+    }
+
+    public FxPurOrder() {}
+
+    public FxPurOrder(PurchaseOrder order,PurchaseOrderItem orderItem,PurchaseAcceptItem needAcceptItem) {
+        this.id = order.getId();
+        this.orderCode = order.getCode();
+        this.custName = order.getReceiveName();
+        this.custUU = order.getVendUU();
+        this.total = orderItem.getAmount();
+        this.date = order.getDate();
+        this.orderItems.add(new FxPurcOrderItem(orderItem,needAcceptItem));
+    }
+
+    public FxPurOrder convert(PurchaseOrder order,Double total){
+        this.id = order.getId();
+        this.orderCode = order.getCode();
+        this.custName = order.getReceiveName();
+        this.custUU = order.getVendUU();
+        this.total = total;
+        this.date = order.getDate();
+        return this;
+    }
+}

+ 122 - 0
src/main/java/com/uas/platform/b2b/openapi/model/FxPurcAcceptItem.java

@@ -0,0 +1,122 @@
+package com.uas.platform.b2b.openapi.model;
+
+import com.uas.platform.b2b.model.PurchaseAcceptItem;
+import com.uas.platform.b2b.model.PurchaseOrder;
+import com.uas.platform.b2b.model.PurchaseOrderItem;
+
+import java.util.Date;
+
+/**
+ * 对应的金控验收明细
+ * @Author: huj
+ * @Date: Created in 10:46 2018/8/27.
+ */
+public class FxPurcAcceptItem {
+
+    /**
+     * 验收单明细id
+     */
+    private Long id;
+    /**
+     *验收单编号
+     */
+    private String acceptCode;
+    /**
+     * 验收单日期
+     */
+    private Date acceptDate;
+    /**
+     * 验收单明细数量
+     */
+    private Double acceptQty;
+    /**
+     * 验收金额
+     */
+    private Double acceptAmount;
+    /**
+     * 验收单明细序号
+     */
+    private Short detno;
+    /**
+     * 订单明细
+     */
+    private FxPurcOrderItem orderItem;
+
+    public FxPurcOrderItem getOrderItem() {
+        return orderItem;
+    }
+
+    public void setOrderItem(FxPurcOrderItem orderItem) {
+        this.orderItem = orderItem;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getAcceptCode() {
+        return acceptCode;
+    }
+
+    public void setAcceptCode(String acceptCode) {
+        this.acceptCode = acceptCode;
+    }
+
+    public Date getAcceptDate() {
+        return acceptDate;
+    }
+
+    public void setAcceptDate(Date acceptDate) {
+        this.acceptDate = acceptDate;
+    }
+
+    public Double getAcceptQty() {
+        return acceptQty;
+    }
+
+    public void setAcceptQty(Double acceptQty) {
+        this.acceptQty = acceptQty;
+    }
+
+    public Double getAcceptAmount() {
+        return acceptAmount;
+    }
+
+    public void setAcceptAmount(Double acceptAmount) {
+        this.acceptAmount = acceptAmount;
+    }
+
+    public Short getDetno() {
+        return detno;
+    }
+
+    public void setDetno(Short detno) {
+        this.detno = detno;
+    }
+
+    public FxPurcAcceptItem(){}
+
+    public FxPurcAcceptItem(PurchaseAcceptItem acceptItem) {
+        this.id = acceptItem.getId();
+        this.acceptCode = acceptItem.getAccept().getCode();
+        this.acceptDate = acceptItem.getAccept().getDate();
+        this.acceptQty = acceptItem.getQty();
+        this.acceptAmount = acceptItem.getTaxrate();
+        this.detno = acceptItem.getNumber();
+    }
+
+    public FxPurcAcceptItem convert(PurchaseAcceptItem acceptItem, PurchaseOrderItem orderItem , PurchaseOrder order) {
+        this.id = acceptItem.getId();
+        this.acceptCode = acceptItem.getAccept().getCode();
+        this.acceptDate = acceptItem.getAccept().getDate();
+        this.acceptQty = acceptItem.getQty();
+        this.acceptAmount = acceptItem.getTaxrate();
+        this.detno = acceptItem.getNumber();
+        this.orderItem = new FxPurcOrderItem().convert(orderItem,order);
+        return this;
+    }
+}

+ 165 - 0
src/main/java/com/uas/platform/b2b/openapi/model/FxPurcOrderItem.java

@@ -0,0 +1,165 @@
+package com.uas.platform.b2b.openapi.model;
+
+import com.uas.platform.b2b.model.PurchaseAcceptItem;
+import com.uas.platform.b2b.model.PurchaseOrder;
+import com.uas.platform.b2b.model.PurchaseOrderItem;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @Author: huj
+ * @Date: Created in 11:19 2018/8/27.
+ */
+public class FxPurcOrderItem {
+
+    /**
+     *订单明细id
+     */
+    private Long id;
+    /**
+     *物料id
+     */
+    private Long productId;
+    /**
+     *物料编号
+     */
+    private String productCode;
+    /**
+     *物料名称
+     */
+    private String productTitle;
+    /**
+     *物料规格
+     */
+    private String productSpec;
+    /**
+     *物料原厂型号
+     */
+    private String productCmpcode;
+    /**
+     * 订单序号
+     */
+    private Short detno;
+    /**
+     * 订单数量
+     */
+    private Double qty;
+    /**
+     * 验收单明细
+     */
+    private Set<FxPurcAcceptItem> acceptItems = new HashSet<>();
+
+    /**
+     * 订单
+     * @return
+     */
+    private FxPurOrder order;
+
+    public Set<FxPurcAcceptItem> getAcceptItems() {
+        return acceptItems;
+    }
+
+    public void setAcceptItems(Set<FxPurcAcceptItem> acceptItems) {
+        this.acceptItems = acceptItems;
+    }
+
+    public FxPurOrder getOrder() {
+        return order;
+    }
+
+    public void setOrder(FxPurOrder order) {
+        this.order = order;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getProductId() {
+        return productId;
+    }
+
+    public void setProductId(Long productId) {
+        this.productId = productId;
+    }
+
+    public String getProductCode() {
+        return productCode;
+    }
+
+    public void setProductCode(String productCode) {
+        this.productCode = productCode;
+    }
+
+    public String getProductTitle() {
+        return productTitle;
+    }
+
+    public void setProductTitle(String productTitle) {
+        this.productTitle = productTitle;
+    }
+
+    public String getProductSpec() {
+        return productSpec;
+    }
+
+    public void setProductSpec(String productSpec) {
+        this.productSpec = productSpec;
+    }
+
+    public String getProductCmpcode() {
+        return productCmpcode;
+    }
+
+    public void setProductCmpcode(String productCmpcode) {
+        this.productCmpcode = productCmpcode;
+    }
+
+    public Short getDetno() {
+        return detno;
+    }
+
+    public void setDetno(Short detno) {
+        this.detno = detno;
+    }
+
+    public Double getQty() {
+        return qty;
+    }
+
+    public void setQty(Double qty) {
+        this.qty = qty;
+    }
+
+    public FxPurcOrderItem(){}
+
+    public FxPurcOrderItem(PurchaseOrderItem orderItem,PurchaseAcceptItem needAcceptItem) {
+        this.id = orderItem.getId();
+        this.productId = orderItem.getProductId();
+        this.productCode = orderItem.getProductCode();
+        this.productTitle = orderItem.getProductTitle();
+        this.productSpec = orderItem.getProductSpec();
+        this.productCmpcode = orderItem.getProductCmpCode();
+        this.detno = orderItem.getNumber();
+        this.qty = orderItem.getQty();
+        this.acceptItems.add(new FxPurcAcceptItem(needAcceptItem));
+    }
+
+    public FxPurcOrderItem convert(PurchaseOrderItem orderItem, PurchaseOrder order) {
+        this.id = orderItem.getId();
+        this.productId = orderItem.getProductId();
+        this.productCode = orderItem.getProductCode();
+        this.productTitle = orderItem.getProductTitle();
+        this.productSpec = orderItem.getProductSpec();
+        this.productCmpcode = orderItem.getProductCmpCode();
+        this.detno = orderItem.getNumber();
+        this.qty = orderItem.getQty();
+        this.order = new FxPurOrder().convert(order,orderItem.getAmount());
+        return this;
+    }
+}

+ 28 - 0
src/main/java/com/uas/platform/b2b/openapi/service/UsoftFxService.java

@@ -0,0 +1,28 @@
+package com.uas.platform.b2b.openapi.service;
+
+import com.uas.platform.b2b.openapi.model.FxPurOrder;
+import com.uas.platform.b2b.openapi.model.FxPurcAcceptItem;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author: huj
+ * @Date: Created in 9:57 2018/8/27.
+ */
+@Service
+public interface UsoftFxService {
+
+    /**
+     * 根据企业enUU获取当前企业最近三个月(订单时间or验收单时间?)有验收单的数据,只返回有验收单的订单和订单明细
+     */
+    List<FxPurOrder> getPurcAccsptItems(Long enUU, List<Long> excludeItemsIds, Date needStartDate, Date needEndDate);
+
+    /**
+     * 根据验收单明细ID获取数据
+     * @param enUU
+     * @param ids
+     */
+    List<FxPurcAcceptItem> getPurcAcceptByItemIds(Long enUU, List<Long> ids);
+}

+ 103 - 0
src/main/java/com/uas/platform/b2b/openapi/service/impl/UsoftFxServiceImpl.java

@@ -0,0 +1,103 @@
+package com.uas.platform.b2b.openapi.service.impl;
+
+import com.uas.platform.b2b.dao.PurchaseAcceptItemDao;
+import com.uas.platform.b2b.model.PurchaseAcceptItem;
+import com.uas.platform.b2b.model.PurchaseOrder;
+import com.uas.platform.b2b.model.PurchaseOrderItem;
+import com.uas.platform.b2b.openapi.model.FxPurOrder;
+import com.uas.platform.b2b.openapi.model.FxPurcAcceptItem;
+import com.uas.platform.b2b.openapi.model.FxPurcOrderItem;
+import com.uas.platform.b2b.openapi.service.UsoftFxService;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * @Author: huj
+ * @Date: Created in 9:57 2018/8/27.
+ */
+@Service
+public class UsoftFxServiceImpl implements UsoftFxService{
+
+    @Autowired
+    PurchaseAcceptItemDao acceptItemDao;
+
+    /**
+     * 根据企业enUU获取当前企业最近三个月(订单时间or验收单时间?)有验收单的数据,只返回有验收单的订单和订单明细
+     */
+    @Override
+    public List<FxPurOrder> getPurcAccsptItems(Long enUU, List<Long> excludeItemsIds, Date needStartDate,Date needEndDate) {
+        List<PurchaseAcceptItem> acceptItems = acceptItemDao.findPurcAccsptItems(enUU,needStartDate,needEndDate);
+        if (!CollectionUtils.isEmpty(excludeItemsIds)) {
+            Iterator<PurchaseAcceptItem> item = acceptItems.iterator();
+            while (item.hasNext()) {
+                for (Long excludeItemId : excludeItemsIds) {
+                    if (item.next().getId().equals(excludeItemId)) {
+                        item.remove();
+                    }
+                }
+            }
+        }
+        List<FxPurOrder> fxPurOrders = new ArrayList<>();
+        List<PurchaseOrderItem> orderItems = new ArrayList<>();
+        for (PurchaseAcceptItem needAcceptItem : acceptItems) {
+            if (!StringUtils.isEmpty(needAcceptItem.getOrderItem())) {
+                PurchaseOrderItem orderItem = needAcceptItem.getOrderItem();
+                PurchaseOrder order = orderItem.getOrder();
+                boolean exit = false;
+                for (FxPurOrder fxPurOrder : fxPurOrders) {
+                    if (order.getId().equals(fxPurOrder.getId())) {
+                        exit = true;
+                    }
+                }
+                boolean exitOrderItem = false;
+                for (PurchaseOrderItem orderItem1 : orderItems) {
+                    if (orderItem1.getId().equals(orderItem1.getId())) {
+                        exitOrderItem =true;
+                    }
+                }
+                orderItems.add(orderItem);
+                if (!exit) {
+                    fxPurOrders.add(new FxPurOrder(order,orderItem,needAcceptItem));
+                } else {
+                    for (FxPurOrder fxPurOrder : fxPurOrders) {
+                        if (order.getId().equals(fxPurOrder.getId())) {
+                            if (!exitOrderItem) {
+                                fxPurOrder.setTotal(fxPurOrder.getTotal()+orderItem.getAmount());
+                                fxPurOrder.getOrderItems().add(new FxPurcOrderItem(orderItem,needAcceptItem));
+                            } else {
+                                for (FxPurcOrderItem fxPurcOrderItem :fxPurOrder.getOrderItems()) {
+                                    if (fxPurcOrderItem.getId().equals(orderItem.getId())) {
+                                        fxPurcOrderItem.getAcceptItems().add(new FxPurcAcceptItem(needAcceptItem));
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return fxPurOrders;
+    }
+
+    /**
+     * 根据验收单明细ID获取数据
+     * @param enUU
+     * @param ids
+     */
+    @Override
+    public List<FxPurcAcceptItem> getPurcAcceptByItemIds(Long enUU,List<Long> ids){
+        List<PurchaseAcceptItem> acceptItems = acceptItemDao.findPurcAcceptByItemIds(enUU,ids);
+        List<FxPurcAcceptItem> fxPurcAcceptItems = new ArrayList<>();
+        for (PurchaseAcceptItem item : acceptItems) {
+            fxPurcAcceptItems.add(new FxPurcAcceptItem().convert(item,item.getOrderItem(),item.getOrderItem().getOrder()));
+        }
+        return fxPurcAcceptItems;
+    }
+}