|
|
@@ -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;
|