Prechádzať zdrojové kódy

采购变更单更新交货日期增加备料状态的更新

hejq 7 rokov pred
rodič
commit
f7d4e99c39

+ 48 - 20
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderChangeServiceImpl.java

@@ -20,6 +20,7 @@ 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;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
@@ -29,10 +30,16 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 import javax.transaction.Transactional;
+import java.sql.SQLException;
 import java.util.*;
 
+/**
+ * 采购变更
+ * 
+ * @author hejq
+ * @date 2018-07-25 11:14
+ */
 @Service
-@Transactional
 public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeService {
 
 	@Autowired
@@ -77,6 +84,12 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 	@Autowired
 	private PurcOrderInfoItemDao purcOrderInfoItemDao;
 
+	@Autowired
+    private JdbcTemplate jdbcTemplate;
+
+	@Autowired
+    private CommunalLogDao communalLogDao;
+
 	@Override
 	public void save(List<PurchaseOrderChangeItem> changeItems) {
 		changeItems = purchaseOrderChangeItemDao.save(changeItems);
@@ -173,7 +186,8 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 	 * @param change
 	 */
 	private void changeOrder(PurchaseOrderChange change) {
-		if (change.isAgreed() || change.getUnNeedReply() == Constant.YES) { // 同意或无需确认
+		// 同意或无需确认
+		if (change.isAgreed() || change.getUnNeedReply() == Constant.YES) {
 			purchaseOrderDao.save(convertOrder(change));
 			if (!CollectionUtils.isEmpty(change.getOrderChangeItems())) {
 				for (PurchaseOrderChangeItem changeItem : change.getOrderChangeItems()) {
@@ -188,8 +202,6 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 			order.setStatus((short) (notReply > 0 ? Status.NOT_REPLY.value() : Status.REPLIED.value()));
 			purchaseOrderDao.save(order);
 			saveUserOrders(order);
-//			if (order.getStatus() == Status.REPLIED.value()) {
-//			}
 		}
 	}
 
@@ -292,6 +304,13 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 				orderItem.setReplyRemark("需求数量变更为0,无需回复");
 			}
 		}
+		if (changItem.getNewDelivery().getTime() != orderItem.getDelivery().getTime()) {
+            // 更新备料状态
+            jdbcTemplate.execute("update purc$notice,products set is_waiting = PURC_NOTICE_WAIT_TO_SEND(pn_delivery, coalesce(pr_ltinstock, 0))" +
+                    " where pr_id = pd_prid and pn_pdid = " + orderItem.getId());
+            communalLogDao.save(new CommunalLog("更新发货提醒备料状态", "采购变更更新备料状态", "采购明细id: " + orderItem.getId(),
+                    SystemSession.getUser().getEnterprise().getUu()));
+		}
 
 		return orderItem;
 	}
@@ -391,12 +410,15 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 	public Page<PurchaseOrderChange> findAllByPageInfo(final PageInfo pageInfo, final String keyword,
 			final SearchFilter filter) {
 		if (filter != null) {
-			if (!CollectionUtils.isEmpty(filter.getDistribute()))
-				pageInfo.expression(PredicateUtils.in("enUU", filter.getDistribute(), false));
-			if (filter.getFromDate() != null)
-				pageInfo.expression(PredicateUtils.gte("date", new Date(filter.getFromDate()), false));
-			if (filter.getEndDate() != null)
-				pageInfo.expression(PredicateUtils.lte("date", new Date(filter.getEndDate()), false));
+			if (!CollectionUtils.isEmpty(filter.getDistribute())) {
+                pageInfo.expression(PredicateUtils.in("enUU", filter.getDistribute(), false));
+            }
+			if (filter.getFromDate() != null) {
+                pageInfo.expression(PredicateUtils.gte("date", new Date(filter.getFromDate()), false));
+            }
+			if (filter.getEndDate() != null) {
+                pageInfo.expression(PredicateUtils.lte("date", new Date(filter.getEndDate()), false));
+            }
 		}
 		if (StringUtils.hasText(keyword)) {
 			List<Object> lists = new ArrayList<>();
@@ -412,8 +434,9 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 		}
 
 		return purchaseOrderChangeDao.findAll(new Specification<PurchaseOrderChange>() {
-			public Predicate toPredicate(Root<PurchaseOrderChange> root, CriteriaQuery<?> query,
-					CriteriaBuilder builder) {
+			@Override
+            public Predicate toPredicate(Root<PurchaseOrderChange> root, CriteriaQuery<?> query,
+                                         CriteriaBuilder builder) {
 				return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
 			}
 		}, pageInfo);
@@ -435,8 +458,9 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 		orderChange.setAgreed(change.getAgreed());
 		orderChange.setReplyRemark(change.getReplyRemark());
 		orderChange.setReplySendStatus(change.getReplySendStatus());
-		if (isB2b)
-			orderChange.setReplySendStatus((short) Status.NOT_UPLOAD.value());
+		if (isB2b) {
+            orderChange.setReplySendStatus((short) Status.NOT_UPLOAD.value());
+        }
 		orderChange = purchaseOrderChangeDao.save(orderChange);
 		// 将回复信息推送给采购企业采购员(或管理员)
 		if (orderChange.getUserUU() != null) {
@@ -506,7 +530,7 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 	}
 
 	@Override
-	@Transactional
+	@Transactional(rollbackOn = SQLException.class)
 	public void setReadByOrder(String category, Long[] sourceId) {
 		userOrderDao.setReadStatus(SystemSession.getUser().getEnterprise().getUu(), SystemSession.getUser().getUserUU(), "purc$changes", category, (short) Status.READ.value(), sourceId);
 	}
@@ -515,16 +539,20 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 	public Map<String, Integer> getChangeCount(String category) {
         List<Long> unreadIds = getUnreadIds(category);
         Map<String, Integer> map = new HashMap<>();
-        Integer repliedCount = 0; // 已处理数量
-        Integer notReplyCount = 0; // 待确认数量
-        Integer unNeedReply = 0; // 无趣确认数量
+        // 已处理数量
+        Integer repliedCount = 0;
+        // 待确认数量
+        Integer notReplyCount = 0;
+        // 无需确认数量
+        Integer unNeedReply = 0;
         if (CollectionUtils.isEmpty(unreadIds)){
             return map;
         }
         if (unreadIds.size() > 1000) {
             List<List<Long>> idsArray = SplitArray.splitAry(unreadIds, SplitArray.QUERY_MAX_NUMBER);
             for (List<Long> ids : idsArray) {
-                if (repliedCount < 100) {  // 超过100不再查询,页面显示99+,减少服务器负担
+                // 超过100不再查询,页面显示99+,减少服务器负担
+                if (repliedCount < 100) { 
                     repliedCount = repliedCount + purchaseOrderChangeDao.findRepliedId(ids).size();
                 }
                 if (notReplyCount < 100) {
@@ -550,7 +578,7 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 	}
 
 	@Override
-	@Transactional
+	@Transactional(rollbackOn = SQLException.class)
 	public Integer setReadByState(String category) {
 		List<Long> unreadIds = getUnreadIds(category);
 		Integer deleteCount = 0;