Browse Source

Merge remote-tracking branch 'origin/release-201845-hejq' into release-201845-hejq

shenjunjie 7 years ago
parent
commit
70db3c1e20

+ 11 - 0
src/main/java/com/uas/platform/b2b/erp/model/PurchaseNotify.java

@@ -80,6 +80,16 @@ public class PurchaseNotify extends KeyEntity {
      */
 	private Long pn_terminalvenduu;
 
+	private Long pn_custb2bid;
+
+	public Long getPn_custb2bid() {
+		return pn_custb2bid;
+	}
+
+	public void setPn_custb2bid(Long pn_custb2bid) {
+		this.pn_custb2bid = pn_custb2bid;
+	}
+
 	public Long getPn_terminalvenduu() {
 		return pn_terminalvenduu;
 	}
@@ -207,6 +217,7 @@ public class PurchaseNotify extends KeyEntity {
 		notice.setErpDate(new Date());
 		notice.setEnd(Constant.NO);
 		notice.setWaiting(Constant.YES);
+		notice.setSaleNoticeId(pn_custb2bid);
 		return notice;
 	}
 

+ 6 - 17
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseNotifyServiceImpl.java

@@ -57,23 +57,12 @@ public class PurchaseNotifyServiceImpl implements PurchaseNotifyService {
 			List<PurchaseNotice> existNotices = purchaseNoticeDao.findByEnUUAndSourceId(notice.getEnUU(), notice.getSourceId());
 			// sourceId不存在新增保存
 			if (CollectionUtils.isEmpty(existNotices)) {
-				// 终端供应商uu存在
-				if (!StringUtils.isEmpty(notify.getPn_terminalvenduu()) && notify.getPn_terminalvenduu() != 0) {
-					List<PurchaseOrderItem> itemList = purchaseOrderItemDao.findByCustpurchasecodeAndCustpurchasedetno(notice.getVendUU(), notice.getOrderItem().getOrder().getCode(),
-							notice.getOrderItem().getNumber());
-					if (!CollectionUtils.isEmpty(itemList)) {
-						notice.setOrderItemId(itemList.get(0).getId());
-						notice.setOrderItem(null);
-						notices.add(notice);
-					}
-				} else {
-					List<Long> idList = purchaseOrderItemDao.findIdByEnUUAndOrderCodeAndNumber(notice.getEnUU(),
-							notice.getOrderItem().getOrder().getCode(), notice.getOrderItem().getNumber());
-					if (!CollectionUtils.isEmpty(idList)) {
-						notice.setOrderItemId(idList.get(0));
-						notice.setOrderItem(null);
-						notices.add(notice);
-					}
+				List<Long> idList = purchaseOrderItemDao.findIdByEnUUAndOrderCodeAndNumber(notice.getEnUU(),
+						notice.getOrderItem().getOrder().getCode(), notice.getOrderItem().getNumber());
+				if (!CollectionUtils.isEmpty(idList)) {
+					notice.setOrderItemId(idList.get(0));
+					notice.setOrderItem(null);
+					notices.add(notice);
 				}
 				// 对现有的单据,修改
 			} else {

+ 41 - 0
src/main/java/com/uas/platform/b2b/event/SaleSendAgentEvent.java

@@ -0,0 +1,41 @@
+package com.uas.platform.b2b.event;
+
+import com.uas.platform.b2b.model.PurchaseNotice;
+import com.uas.platform.b2b.model.SaleSend;
+import org.springframework.context.ApplicationEvent;
+
+/**
+ * 送货单
+ *  @Author: huj
+ * @Date: Created in 16:33 2018/12/10.
+ */
+public class SaleSendAgentEvent extends ApplicationEvent {
+
+    private static final long serialVersionUID = -1432010236692387070L;
+
+    private PurchaseNotice notice;
+
+    private SaleSend saleSend;
+
+    public SaleSendAgentEvent(PurchaseNotice notice, SaleSend saleSend) {
+        super(notice);
+        this.notice = notice;
+        this.saleSend = saleSend;
+    }
+
+    public PurchaseNotice getNotice() {
+        return notice;
+    }
+
+    public void setNotice(PurchaseNotice notice) {
+        this.notice = notice;
+    }
+
+    public SaleSend getSaleSend() {
+        return saleSend;
+    }
+
+    public void setSaleSend(SaleSend saleSend) {
+        this.saleSend = saleSend;
+    }
+}

+ 60 - 0
src/main/java/com/uas/platform/b2b/event/SaleSendAgentListener.java

@@ -0,0 +1,60 @@
+package com.uas.platform.b2b.event;
+
+import com.uas.platform.b2b.model.PurchaseNotice;
+import com.uas.platform.b2b.model.SaleSend;
+import com.uas.platform.b2b.service.SaleSendAgentService;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationListener;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+
+/**
+ * @Author: huj
+ * @Date: Created in 17:29 2018/12/10.
+ */
+@Component
+@EnableAsync
+public class SaleSendAgentListener implements ApplicationListener<SaleSendAgentEvent> {
+
+    @Autowired
+    SaleSendAgentService saleSendService;
+
+    private final static Logger LOGGER = Logger.getLogger(SaleSendAgentListener.class);
+
+    /**
+     * Handle an application event.
+     *
+     * @param event the event to respond to
+     */
+    @Async
+    @Override
+    public void onApplicationEvent(SaleSendAgentEvent event) {
+        PurchaseNotice notice = event.getNotice();
+        SaleSend saleSend = event.getSaleSend();
+        // do something
+//        try {
+//            Thread.sleep(10000);//让线程休眠,根据输出结果判断主线程和从线程是同步还是异步
+//            System.out.println("异步threadId:"+Thread.currentThread().getId());
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+        if (StringUtils.isEmpty(notice.getId())) {
+            SaleSend send = saleSendService.sendBatch(saleSend);
+            if (!StringUtils.isEmpty(send)) {
+                LOGGER.info(String.format("代采订单批量发货成功,送货单id:%s", saleSend.getId()));
+            } else {
+                LOGGER.error(String.format("代采订单批量发货失败,送货单id:%s", saleSend.getId()));
+            }
+        } else {
+            SaleSend send = saleSendService.send(notice, saleSend);
+            if (!StringUtils.isEmpty(send)) {
+                LOGGER.info(String.format("代采订单发货成功,客户送货提醒id:%s,送货提醒id:%s", notice.getSaleNoticeId(), notice.getId()));
+            } else {
+                LOGGER.error(String.format("代采订单发货失败,客户送货提醒id:%s,送货提醒id:%s", notice.getSaleNoticeId(), notice.getId()));
+            }
+        }
+    }
+}

+ 1 - 1
src/main/java/com/uas/platform/b2b/model/ErpProdIODetail.java

@@ -219,7 +219,7 @@ public class ErpProdIODetail implements Serializable {
      */
     public ErpProdIODetail(PurchaseApCheck apCheck, PurchaseApCheckItem item) {
         this.haveChecked = Constant.YES;
-        this.apCheckDate = apCheck.getApDate();
+        this.apCheckDate = apCheck.getRecordDate();
         this.custname = apCheck.getCustName();
         this.custuu = apCheck.getCustUu();
         this.currency = apCheck.getCurrency();

+ 16 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseNotice.java

@@ -141,6 +141,22 @@ public class PurchaseNotice implements Serializable {
 	@Column(name = "pn_erpdate")
 	private Date erpDate;
 
+	/**
+	 * 客户送货提醒号(代采)
+	 *
+	 * @return
+	 */
+	@Column(name = "pn_salenoticeid")
+	private Long saleNoticeId;
+
+	public Long getSaleNoticeId() {
+		return saleNoticeId;
+	}
+
+	public void setSaleNoticeId(Long saleNoticeId) {
+		this.saleNoticeId = saleNoticeId;
+	}
+
 	public Long getId() {
 		return id;
 	}

+ 26 - 0
src/main/java/com/uas/platform/b2b/service/SaleSendAgentService.java

@@ -0,0 +1,26 @@
+package com.uas.platform.b2b.service;
+
+import com.uas.platform.b2b.model.PurchaseNotice;
+import com.uas.platform.b2b.model.SaleSend;
+
+/**
+ * @Author: huj
+ * @Date: Created in 09:16 2018/12/11.
+ */
+public interface SaleSendAgentService {
+
+    /**
+     * 代采订单发货
+     * @param notice 发货提醒
+     * @param saleSend 发货单
+     * @return 送货单
+     */
+    SaleSend send(PurchaseNotice notice, SaleSend saleSend);
+
+    /**
+     * 代采订单发货批量
+     * @param saleSend 发货单
+     * @return 送货单
+     */
+    SaleSend sendBatch(SaleSend saleSend);
+}

+ 5 - 4
src/main/java/com/uas/platform/b2b/service/impl/PurchaseApCheckServiceImpl.java

@@ -325,10 +325,11 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
 	@Override
 	@Transactional(rollbackFor = SQLException.class)
 	public PurchaseApCheck save(PurchaseApCheck purchaseApCheck) {
-		purchaseApCheck.setRecordDate(new Date());
-		Date d = new Date();
-		SimpleDateFormat sdf = new SimpleDateFormat("yyMMddhhmmss_sss");
-		String code = sdf.format(d);
+		Date date = new Date();
+        purchaseApCheck.setRecordDate(date);
+        purchaseApCheck.setCommitDate(date);
+        SimpleDateFormat sdf = new SimpleDateFormat("yyMMddhhmmss_sss");
+		String code = sdf.format(date);
 		purchaseApCheck.setCode(code);
 		purchaseApCheck.setRecorder(SystemSession.getUser().getUserName());
 		purchaseApCheck.setRecorderUU(SystemSession.getUser().getUserUU());

+ 18 - 2
src/main/java/com/uas/platform/b2b/service/impl/PurchaseNoticeServiceImpl.java

@@ -15,6 +15,7 @@ import com.uas.platform.b2b.dao.SaleSendItemDao;
 import com.uas.platform.b2b.dao.SaleSendItemVerifyDao;
 import com.uas.platform.b2b.erp.model.PurchaseNotify;
 import com.uas.platform.b2b.event.SaleSendAcceptReleaseEvent;
+import com.uas.platform.b2b.event.SaleSendAgentEvent;
 import com.uas.platform.b2b.model.B2bCodeSet;
 import com.uas.platform.b2b.model.BarLabelPrintSetting;
 import com.uas.platform.b2b.model.BarPackage;
@@ -49,6 +50,7 @@ import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.search.b2b.model.SPage;
 import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
@@ -394,7 +396,13 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 			}
 			// 我的产品库更新
             personalProductService.covertPersonalProduct(notice.getOrderItem().getProductId(), "单个发货");
-			return sendItems.get(0).getSend();
+			SaleSend saleSend = new SaleSend();
+			BeanUtils.copyProperties(sendItems.get(0).getSend(), saleSend);
+			// 代采发货单
+			if (!StringUtils.isEmpty(notice.getOrderItem().getCustPurchaseCode())) {
+				ContextUtils.publishEvent(new SaleSendAgentEvent(notice, send));
+			}
+			return saleSend;
 		} else {
 			throw new IllegalOperatorException("请对有效的送货提醒发货!");
 		}
@@ -469,11 +477,19 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 			}
             purchaseNoticeDao.save(noticeList);
             sendItems = saleSendItemDao.save(sendItems);
+            SaleSend send = new SaleSend();
+            BeanUtils.copyProperties(sendItems.get(0).getSend(), send);
+			for (SaleSendItem sendItem : sendItems) {
+				if (!StringUtils.isEmpty(sendItem.getNotice().getSaleNoticeId())) {
+					ContextUtils.publishEvent(new SaleSendAgentEvent(new PurchaseNotice(), sendItems.get(0).getSend()));
+					break;
+				}
+			}
 			if (!CollectionUtils.isEmpty(sendItems)) {
 				List<SaleSend> saleSends = new ArrayList<>();
 				saleSends.add(sendItems.get(0).getSend());
 			}
-			return sendItems.get(0).getSend();
+			return send;
 		} else {
 			throw new IllegalArgumentException();
 		}

+ 163 - 0
src/main/java/com/uas/platform/b2b/service/impl/SaleSendAgentServiceImpl.java

@@ -0,0 +1,163 @@
+package com.uas.platform.b2b.service.impl;
+
+import com.uas.platform.b2b.dao.PurchaseNoticeDao;
+import com.uas.platform.b2b.dao.SaleSendDao;
+import com.uas.platform.b2b.dao.SaleSendItemDao;
+import com.uas.platform.b2b.model.PurchaseNotice;
+import com.uas.platform.b2b.model.PurchaseOrder;
+import com.uas.platform.b2b.model.SaleSend;
+import com.uas.platform.b2b.model.SaleSendItem;
+import com.uas.platform.b2b.service.SaleSendAgentService;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.support.TokenService;
+import com.uas.platform.core.exception.IllegalOperatorException;
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.model.Status;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.StringUtils;
+
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * @Author: huj
+ * @Date: Created in 09:16 2018/12/11.
+ */
+@Service
+public class SaleSendAgentServiceImpl implements SaleSendAgentService {
+
+
+    @Autowired
+    private PurchaseNoticeDao purchaseNoticeDao;
+
+    @Autowired
+    private SaleSendItemDao saleSendItemDao;
+
+    @Autowired
+    private TokenService tokenService;
+
+
+    @Autowired
+    private SaleSendDao saleSendDao;
+
+    private final static Logger LOGGER = Logger.getLogger(SaleSendAgentServiceImpl.class);
+
+    /**
+     * 代采订单发货
+     * @param purchaseNotice 发货提醒
+     * @param saleSend 发货单
+     * @return 送货单
+     */
+    @Override
+    public SaleSend send(PurchaseNotice purchaseNotice, SaleSend saleSend) {
+        PurchaseNotice notice = purchaseNoticeDao.findOne(purchaseNotice.getSaleNoticeId());
+        SaleSend send = saleSend;
+        ModelMap map = tokenService.getToken("salenotice", notice.getEnUU());
+        String token = (String) map.get("token");
+        send.setUuid(token);
+        if (!StringUtils.isEmpty(notice)) {
+            PurchaseOrder order = notice.getOrderItem().getOrder();
+            send.setCurrency(order.getCurrency());
+            send.setBackStatus((short) Status.NOT_UPLOAD.value());
+            send.setSendStatus((short) Status.NOT_UPLOAD.value());
+            // 未收料
+            send.setVerifystatus(Constant.NO);
+            send.setCustUU(notice.getEnUU());
+            send.setCustUserUU(order.getUserUU());
+            send.setDate(new Date());
+            send.setEnUU(order.getVendUU());
+            send.setPayments(order.getPayments());
+            send.setRate(order.getRate());
+            send.setRecorder(saleSend.getRecorder());
+            send.setId(null);
+            short number = 0;
+            for (SaleSendItem item : send.getSendItems()) {
+                item.setId(null);
+                item.setNoticeId(notice.getId());
+                item.setNotice(notice);
+                item.setNumber(++number);
+                item.setOrderItem(notice.getOrderItem());
+                item.setOrderItemId(notice.getOrderItem().getId());
+                item.setPrice(notice.getOrderItem().getPrice());
+                item.setSend(send);
+            }
+            List<SaleSendItem> sendItems = saleSendItemDao.save(send.getSendItems());
+            notice.setEndQty(purchaseNotice.getEndQty());
+            notice.setStatus(purchaseNotice.getStatus());
+            purchaseNoticeDao.save(notice);
+            LOGGER.info(String.format("代采订单发货成功,客户送货提醒id:%s,送货提醒id:%s", notice.getId(), purchaseNotice.getId()));
+            return sendItems.get(0).getSend();
+        } else {
+            LOGGER.error(String.format("代采订单发货失败,客户送货提醒id:%s,送货提醒id:%s", purchaseNotice.getSaleNoticeId(),
+                    purchaseNotice.getId()));
+            throw new IllegalOperatorException("请对有效的送货提醒发货!");
+        }
+    }
+
+    /**
+     * 代采订单发货批量
+     * @param saleSend 发货单
+     * @return 送货单
+     */
+    @Override
+    public SaleSend sendBatch(SaleSend saleSend) {
+        SaleSend send = saleSend;
+        short number = 0;
+        boolean setSend = false;
+        Iterator<SaleSendItem> iterator = send.getSendItems().iterator();
+        while (iterator.hasNext()) {
+            SaleSendItem next = iterator.next();
+            if (StringUtils.isEmpty(next.getNotice().getSaleNoticeId())) {
+                iterator.remove();
+            }
+        }
+        for (SaleSendItem item : send.getSendItems()) {
+            if (!StringUtils.isEmpty(item.getNotice().getSaleNoticeId())) {
+                PurchaseNotice purchaseNotice = purchaseNoticeDao.findOne(item.getNoticeId());
+                PurchaseNotice notice = purchaseNoticeDao.findOne(item.getNotice().getSaleNoticeId());
+                item.setId(null);
+                item.setNoticeId(notice.getId());
+                item.setNotice(notice);
+                item.setNumber(++number);
+                item.setOrderItem(notice.getOrderItem());
+                item.setOrderItemId(notice.getOrderItem().getId());
+                item.setPrice(notice.getOrderItem().getPrice());
+                item.setSend(send);
+                if (!setSend) {
+                    PurchaseOrder order = notice.getOrderItem().getOrder();
+                    send.setCurrency(order.getCurrency());
+                    send.setBackStatus((short) Status.NOT_UPLOAD.value());
+                    send.setSendStatus((short) Status.NOT_UPLOAD.value());
+                    // 未收料
+                    send.setVerifystatus(Constant.NO);
+                    send.setCustUU(notice.getEnUU());
+                    send.setCustUserUU(order.getUserUU());
+                    send.setDate(new Date());
+                    send.setEnUU(order.getVendUU());
+                    send.setPayments(order.getPayments());
+                    send.setRate(order.getRate());
+                    send.setRecorder(saleSend.getRecorder());
+                    send.setId(null);
+                    ModelMap map = tokenService.getToken("salenotice", notice.getEnUU());
+                    String token = (String) map.get("token");
+                    send.setUuid(token);
+                    setSend = true;
+                }
+                notice.setEndQty(purchaseNotice.getEndQty());
+                notice.setStatus(purchaseNotice.getStatus());
+                purchaseNoticeDao.save(notice);
+            } else {
+                LOGGER.error(String.format("代采订单发货失败,客户送货提醒id:%s,送货提醒id:%s", "空",
+                        item.getNoticeId()));
+                throw new IllegalOperatorException("请对有效的送货提醒发货!");
+            }
+        }
+        List<SaleSendItem> sendItems = saleSendItemDao.save(send.getSendItems());
+        return sendItems.get(0).getSend();
+    }
+}

BIN
src/main/resources/jxls-tpl/fa/faApCheck.xls


+ 2 - 5
src/main/webapp/resources/js/index/app.js

@@ -10914,8 +10914,8 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             if (angular.isDefined($scope.thisMouth)) {
                 url = url + '&checkDate=' + $scope.thisMouth;
             }
-            if (angular.isDefined($scope.receiveName)) {
-                url = url + '&receiveName=' + $scope.receiveName;
+            if (angular.isDefined($scope.customerUU)) {
+                url = url + '&customerUU=' + $scope.customerUU;
             }
             if (angular.isDefined($scope.factory)) {
                 url = url + '&factory=' + $scope.factory;
@@ -10926,9 +10926,6 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             if (angular.isDefined($scope.prodSpec)) {
                 url = url + '&prodSpec=' + $scope.prodSpec;
             }
-            if (angular.isDefined($scope.suuorname)) {
-                url = url + '&suuorname=' + $scope.suuorname;
-            }
             if (angular.isDefined($scope.taxRate)) {
                 url = url + '&taxRate=' + $scope.taxRate;
             }