Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/dev-mysql' into dev-mysql

wangyc 8 anni fa
parent
commit
23067e4aae

+ 22 - 0
src/main/java/com/uas/platform/b2b/erp/dao/KeywordAliasDao.java

@@ -0,0 +1,22 @@
+package com.uas.platform.b2b.erp.dao;
+
+import com.uas.platform.b2b.erp.model.KeywordAlias;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+/**
+ * 别名表
+ *
+ * Created by hejq on 2018-05-15.
+ */
+public interface KeywordAliasDao extends JpaSpecificationExecutor<KeywordAlias>, JpaRepository<KeywordAlias, Long> {
+
+    /**
+     * 通过类型和别名查询信息
+     *
+     * @param type 类型
+     * @param alias 别名
+     * @return
+     */
+    KeywordAlias findByTypeAndAlias(String type, String alias);
+}

+ 15 - 1
src/main/java/com/uas/platform/b2b/erp/model/KeywordAlias.java

@@ -27,7 +27,7 @@ public class KeywordAlias implements Serializable {
     private Long id;
     private Long id;
 
 
     /**
     /**
-     * 类型
+     * 类型,币别、企业等
      */
      */
     @Column(name = "ka_type")
     @Column(name = "ka_type")
     private String type;
     private String type;
@@ -44,6 +44,12 @@ public class KeywordAlias implements Serializable {
     @Column(name = "ka_name")
     @Column(name = "ka_name")
     private String name;
     private String name;
 
 
+    /**
+     * 对应的平台的标准的value值,如企业UU号等
+     */
+    @Column(name = "ka_value")
+    private String value;
+
     /**
     /**
      * 别名,传入的数据
      * 别名,传入的数据
      */
      */
@@ -82,6 +88,14 @@ public class KeywordAlias implements Serializable {
         this.name = name;
         this.name = name;
     }
     }
 
 
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
     public String getAlias() {
     public String getAlias() {
         return alias;
         return alias;
     }
     }

+ 187 - 17
src/main/java/com/uas/platform/b2b/erp/service/impl/AutOrderServiceImpl.java

@@ -1,18 +1,35 @@
 package com.uas.platform.b2b.erp.service.impl;
 package com.uas.platform.b2b.erp.service.impl;
 
 
 import com.uas.platform.b2b.core.util.ThreadUtils;
 import com.uas.platform.b2b.core.util.ThreadUtils;
+import com.uas.platform.b2b.dao.EnterpriseDao;
+import com.uas.platform.b2b.dao.ProductDao;
+import com.uas.platform.b2b.dao.PurchaseOrderAllDao;
 import com.uas.platform.b2b.erp.dao.AutOrderDao;
 import com.uas.platform.b2b.erp.dao.AutOrderDao;
 import com.uas.platform.b2b.erp.dao.AutOrderDetailDao;
 import com.uas.platform.b2b.erp.dao.AutOrderDetailDao;
+import com.uas.platform.b2b.erp.dao.KeywordAliasDao;
 import com.uas.platform.b2b.erp.model.AutOrder;
 import com.uas.platform.b2b.erp.model.AutOrder;
 import com.uas.platform.b2b.erp.model.AutOrderDetail;
 import com.uas.platform.b2b.erp.model.AutOrderDetail;
+import com.uas.platform.b2b.erp.model.KeywordAlias;
 import com.uas.platform.b2b.erp.service.AutOrderService;
 import com.uas.platform.b2b.erp.service.AutOrderService;
+import com.uas.platform.b2b.model.Enterprise;
+import com.uas.platform.b2b.model.Product;
+import com.uas.platform.b2b.model.PurchaseOrderAll;
+import com.uas.platform.b2b.model.PurchaseOrderAllItem;
+import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
 import com.uas.platform.core.model.Status;
+import org.apache.axis.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.CollectionUtils;
 
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
 import java.util.List;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 
 /**
 /**
  * 自动生成订单
  * 自动生成订单
@@ -28,6 +45,38 @@ public class AutOrderServiceImpl implements AutOrderService {
     @Autowired
     @Autowired
     private AutOrderDetailDao detailDao;
     private AutOrderDetailDao detailDao;
 
 
+    @Autowired
+    private KeywordAliasDao keywordAliasDao;
+
+    @Autowired
+    private EnterpriseDao enterpriseDao;
+
+    @Autowired
+    private ProductDao productDao;
+
+    @Autowired
+    private PurchaseOrderAllDao orderAllDao;
+
+    /**
+     * 企业类型
+     */
+    private final String ENTERPRISE_TYPE = "enterprise";
+
+    /**
+     * 币别类型
+     */
+    private final String CURRENCY_TYPE = "currency";
+
+    /**
+     * 数字正则
+     */
+    private final String NUMBER_REG = "[^0-9]";
+
+    /**
+     * 用户类型
+     */
+    private final String USER_TYPE = "user";
+
     /**
     /**
      * 保存订单信息
      * 保存订单信息
      *
      *
@@ -39,24 +88,15 @@ public class AutOrderServiceImpl implements AutOrderService {
             for (AutOrder order : orderList) {
             for (AutOrder order : orderList) {
                 order.setStatus(Status.TOBE_HANDLE.value());
                 order.setStatus(Status.TOBE_HANDLE.value());
                 order.setDate(new Date(System.currentTimeMillis()));
                 order.setDate(new Date(System.currentTimeMillis()));
-                final AutOrder autOrder =  autOrderDao.save(order);
+                order =  autOrderDao.save(order);
                 if (!CollectionUtils.isEmpty(order.getDetails())) {
                 if (!CollectionUtils.isEmpty(order.getDetails())) {
                     for (AutOrderDetail detail : order.getDetails()) {
                     for (AutOrderDetail detail : order.getDetails()) {
-                        detail.setPuId(autOrder.getId());
+                        detail.setPuId(order.getId());
                         detail.setDate(new Date(System.currentTimeMillis()));
                         detail.setDate(new Date(System.currentTimeMillis()));
                     }
                     }
-                    final List<AutOrderDetail> detailList = detailDao.save(order.getDetails());
-                    ThreadUtils.task(new Runnable() {
-                        @Override
-                        public void run() {
-                            try {
-                                // 转成平台的单据
-                                covertToSaleOrders(autOrder, detailList);
-                            } catch (Exception e) {
-                                e.printStackTrace();
-                            }
-                        }
-                    }).run();
+                    detailDao.save(order.getDetails());
+                    // 转成平台的单据
+                    covertToSaleOrders(order);
                 }
                 }
             }
             }
         }
         }
@@ -66,9 +106,139 @@ public class AutOrderServiceImpl implements AutOrderService {
      * 生成平台的单据
      * 生成平台的单据
      *
      *
      * @param autOrder 订单主表
      * @param autOrder 订单主表
-     * @param detailList 订单明细
      */
      */
-    private void covertToSaleOrders(AutOrder autOrder, List<AutOrderDetail> detailList) {
-        // TODO
+    private void covertToSaleOrders(final AutOrder autOrder) {
+        ThreadUtils.task(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    PurchaseOrderAll order = coverToPurchase(autOrder);
+                    orderAllDao.save(order);
+                    AutOrder order1 = autOrderDao.findOne(order.getAuId());
+                    order1.setToDate(new Date(System.currentTimeMillis()));
+                    autOrderDao.save(order1);
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
+            }
+        }).run();
+    }
+
+    /**
+     * 解析的订单数据转换成平台的订单数据
+     *
+     * @param autOrder 解析的订单数据
+     * @return
+     */
+    private PurchaseOrderAll coverToPurchase(AutOrder autOrder) throws ParseException {
+        PurchaseOrderAll order = new PurchaseOrderAll();
+        order.setCode(autOrder.getPu_code());
+        order.setDate(new Date(System.currentTimeMillis()));
+        order.setSendStatus((short) Status.NOT_UPLOAD.value());
+        order.setStatus((short) Status.NOT_REPLY.value());
+        order.setShipAddress(autOrder.getPu_shipaddresscode());
+        order.setEnd(Constant.NO);
+        order.setDisplay(Constant.NO);
+        order.setPrint(Constant.NO);
+        order.setCustPrint(Constant.NO);
+        order.setReply(Constant.NO);
+        order.setFilepath(autOrder.getPu_filepath());
+        order.setAuId(autOrder.getId());
+        KeywordAlias en_alias = keywordAliasDao.findByTypeAndAlias(ENTERPRISE_TYPE, autOrder.getEn_name());
+        if (null != en_alias) {
+            order.setEnUU(Long.valueOf(en_alias.getValue()));
+            order.setCop(en_alias.getName());
+            Enterprise enterprise = enterpriseDao.findOne(Long.valueOf(en_alias.getValue()));
+            order.setUserUU(enterprise.getEnAdminuu());
+        }
+        KeywordAlias cu_alias = keywordAliasDao.findByTypeAndAlias(CURRENCY_TYPE, autOrder.getPu_currency());
+        if (null != cu_alias) {
+            order.setCurrency(cu_alias.getValue());
+        }
+        KeywordAlias ve_alias = keywordAliasDao.findByTypeAndAlias(ENTERPRISE_TYPE, autOrder.getVe_name());
+        if (null != ve_alias) {
+            order.setVendUU(Long.valueOf(ve_alias.getValue()));
+            order.setReceiveName(ve_alias.getName());
+        }
+        Pattern p = Pattern.compile(NUMBER_REG);
+        Matcher m = p.matcher(autOrder.getPu_date());
+        String rate = m.replaceAll("").trim();
+        order.setRate(StringUtils.isEmpty(rate) ? null : Float.valueOf(rate));
+        KeywordAlias u_alias = keywordAliasDao.findByTypeAndAlias(USER_TYPE, autOrder.getEm_name());
+        if (null != u_alias) {
+            order.setUserUU(Long.valueOf(u_alias.getValue()));
+        }
+        Set<PurchaseOrderAllItem> items = new HashSet<>();
+        if (!CollectionUtils.isEmpty(autOrder.getDetails())) {
+            int i = 1;
+            for (AutOrderDetail detail : autOrder.getDetails()) {
+                items.add(coverToItem(detail, i, order.getEnUU()));
+                i++;
+            }
+        }
+        order.setOrderItems(items);
+        return order;
+    }
+
+    /**
+     * 将解析订单明细转成平台采购订单明细
+     *
+     * @param detail 解析出来的采购订单明细
+     * @param i 序号
+     * @param enUU 企业UU
+     * @return
+     */
+    private PurchaseOrderAllItem coverToItem(AutOrderDetail detail, int i, Long enUU) throws ParseException {
+        PurchaseOrderAllItem item = new PurchaseOrderAllItem();
+        item.setStatus((short) Status.NOT_REPLY.value());
+        item.setErpDate(new Date(System.currentTimeMillis()));
+        item.setAudId(detail.getId());
+        Pattern p = Pattern.compile(NUMBER_REG);
+        Matcher m = p.matcher(detail.getPd_qty());
+        String qty = m.replaceAll("").trim();
+        item.setQty(StringUtils.isEmpty(qty) ? 0 : Double.valueOf(qty));
+        item.setNumber(StringUtils.isEmpty(detail.getPd_detno()) ? (short) i : Short.valueOf(detail.getPd_detno()));
+        Matcher ma = p.matcher(detail.getPd_rate());
+        String taxtRate = ma.replaceAll("").trim();
+        item.setTaxrate(StringUtils.isEmpty(taxtRate) ? null : Float.valueOf(taxtRate));
+        List<Product> productList = productDao.findByEnUUAndCode(enUU, detail.getPd_prodcode());
+        if (!CollectionUtils.isEmpty(productList)) {
+            item.setProductId(productList.get(0).getId());
+        }
+        Matcher pr = p.matcher(detail.getPd_price());
+        String price = pr.replaceAll("").trim();
+        item.setPrice(StringUtils.isEmpty(price) ? null : Double.valueOf(price));
+        item.setDelivery(matchTime(detail.getPd_delivery()));
+        return item;
+    }
+
+    /**
+     * 处理时间格式
+     *
+     * @param delivery 解析订单中的明细交期
+     * @return
+     */
+    private Date matchTime(String delivery) throws ParseException {
+        if (!StringUtils.isEmpty(delivery)) {
+            delivery = delivery.trim();
+            String TIME_PATTERN_1 = "\\d{4}-\\d{2}-\\d{2}";
+            String TIME_PATTERN_2 = "\\d{4}\\d{2}\\d{2}";
+            String TIME_PATTERN_3 = "\\d{4}/\\d{2}/\\d{2}";
+            if (delivery.matches(TIME_PATTERN_1)) {
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
+                return sdf.parse(delivery);
+            } else if (delivery.matches(TIME_PATTERN_2)) {
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyymmdd");
+                return sdf.parse(delivery);
+            } else if (delivery.contains("年") || delivery.contains("月") || delivery.contains("日")) {
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd");
+                return sdf.parse(delivery);
+            } else if (delivery.matches(TIME_PATTERN_3)) {
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy/mm/dd");
+                return sdf.parse(delivery);
+            }
+
+        }
+        return null;
     }
     }
 }
 }

+ 56 - 27
src/main/java/com/uas/platform/b2b/model/PurchaseOrderAll.java

@@ -1,27 +1,12 @@
 package com.uas.platform.b2b.model;
 package com.uas.platform.b2b.model;
 
 
 
 
+import org.hibernate.annotations.Where;
+
+import javax.persistence.*;
 import java.util.Date;
 import java.util.Date;
 import java.util.Set;
 import java.util.Set;
 
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Index;
-import javax.persistence.JoinColumn;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-import javax.persistence.OrderBy;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-
-import org.hibernate.annotations.Where;
-
 /**
 /**
  * 平台里面,以供应商的角度来查看采购订单 <br>
  * 平台里面,以供应商的角度来查看采购订单 <br>
  * 级联采购明细
  * 级联采购明细
@@ -239,23 +224,41 @@ public class PurchaseOrderAll {
 	@Column(name = "pu_end")
 	@Column(name = "pu_end")
 	private Short end;
 	private Short end;
 
 
+	/**
+	 * 用途
+	 */
 	@Column(name = "pu_purpose")
 	@Column(name = "pu_purpose")
-	private String purpose; // 用途,
+	private String purpose;
 
 
+	/**
+	 * 买家应收客户
+	 */
 	@Column(name = "pu_arcustcode")
 	@Column(name = "pu_arcustcode")
-	private String arCustCode; // 买家应收客户,
+	private String arCustCode;
 
 
+	/**
+	 * 收货客户
+	 */
 	@Column(name = "pu_shcustcode")
 	@Column(name = "pu_shcustcode")
-	private String shCustCode; // 收货客户,
+	private String shCustCode;
 
 
+	/**
+	 * 销售单号
+	 */
 	@Column(name = "pu_refcode")
 	@Column(name = "pu_refcode")
-	private String refCode; // 销售单号
+	private String refCode;
 
 
+	/**
+	 * 客户编号
+	 */
 	@Column(name = "pu_custcode")
 	@Column(name = "pu_custcode")
-	private String custCode; // 客户编号,
+	private String custCode;
 
 
+	/**
+	 * 客户名称
+	 */
 	@Column(name = "pu_custname")
 	@Column(name = "pu_custname")
-	private String custName; // 客户名称。
+	private String custName;
 
 
 	/**
 	/**
 	 * 运输方式
 	 * 运输方式
@@ -263,6 +266,18 @@ public class PurchaseOrderAll {
 	@Column(name = "pu_transport")
 	@Column(name = "pu_transport")
 	private String transport;
 	private String transport;
 
 
+    /**
+     * 自动生成订单的pdf文档路径
+     */
+	@Column(name = "pu_filepath")
+	private String filepath;
+
+    /**
+     * 自动生成订单的id
+     */
+	@Column(name = "pu_auid")
+    private Long auId;
+
 	public String getPurpose() {
 	public String getPurpose() {
 		return purpose;
 		return purpose;
 	}
 	}
@@ -488,9 +503,7 @@ public class PurchaseOrderAll {
 	}
 	}
 
 
 	public Short getDisplay() {
 	public Short getDisplay() {
-		if (this.display == null)
-			this.display = 0;
-		return display;
+		return display == null ? 0 : display;
 	}
 	}
 
 
 	public void setDisplay(Short display) {
 	public void setDisplay(Short display) {
@@ -584,4 +597,20 @@ public class PurchaseOrderAll {
 	public void setReply(Short reply) {
 	public void setReply(Short reply) {
 		this.reply = reply;
 		this.reply = reply;
 	}
 	}
+
+    public String getFilepath() {
+        return filepath;
+    }
+
+    public void setFilepath(String filepath) {
+        this.filepath = filepath;
+    }
+
+    public Long getAuId() {
+        return auId;
+    }
+
+    public void setAuId(Long auId) {
+        this.auId = auId;
+    }
 }
 }

+ 28 - 10
src/main/java/com/uas/platform/b2b/model/PurchaseOrderAllItem.java

@@ -22,6 +22,9 @@ public class PurchaseOrderAllItem {
 	@Column(name = "pd_number")
 	@Column(name = "pd_number")
 	private Short number;
 	private Short number;
 
 
+	/**
+	 * 主表id
+	 */
 	@Column(name = "pd_puid")
 	@Column(name = "pd_puid")
 	private Long puid;
 	private Long puid;
 
 
@@ -94,14 +97,6 @@ public class PurchaseOrderAllItem {
 	@Column(name = "pd_vendspec")
 	@Column(name = "pd_vendspec")
 	private String vendspec;
 	private String vendspec;
 
 
-	public String getVendspec() {
-		return vendspec;
-	}
-
-	public void setVendspec(String vendspec) {
-		this.vendspec = vendspec;
-	}
-
 	/**
 	/**
 	 * 含税单价
 	 * 含税单价
 	 */
 	 */
@@ -180,7 +175,14 @@ public class PurchaseOrderAllItem {
 	@Column(name = "pd_prodsource")
 	@Column(name = "pd_prodsource")
 	private String prodsource;
 	private String prodsource;
 
 
-	public Long getId() {
+    /**
+     * 自动生成订单的id
+     */
+    @Column(name = "pd_audid")
+    private Long audId;
+
+
+    public Long getId() {
 		return id;
 		return id;
 	}
 	}
 
 
@@ -262,6 +264,14 @@ public class PurchaseOrderAllItem {
 		this.remark = remark;
 		this.remark = remark;
 	}
 	}
 
 
+    public String getVendspec() {
+        return vendspec;
+    }
+
+    public void setVendspec(String vendspec) {
+        this.vendspec = vendspec;
+    }
+
 	public Double getPrice() {
 	public Double getPrice() {
 		return price;
 		return price;
 	}
 	}
@@ -387,7 +397,15 @@ public class PurchaseOrderAllItem {
 		return StringUtils.isEmpty(prodsource) ? "seller" : prodsource;
 		return StringUtils.isEmpty(prodsource) ? "seller" : prodsource;
 	}
 	}
 
 
-	public void setProdsource(String prodsource) {
+    public Long getAudId() {
+        return audId;
+    }
+
+    public void setAudId(Long audId) {
+        this.audId = audId;
+    }
+
+    public void setProdsource(String prodsource) {
 		this.prodsource = prodsource;
 		this.prodsource = prodsource;
 	}
 	}