Hu Jie 7 лет назад
Родитель
Сommit
56368b4e63

+ 4 - 3
src/main/java/com/uas/platform/b2b/controller/PurcOrderChangeController.java

@@ -66,6 +66,7 @@ public class PurcOrderChangeController {
      */
     @RequestMapping(value = "/enable/orderList", method = RequestMethod.GET)
     public SPage<PurchaseOrderAll> findByPageInfo(PageParams pageParams, String searchFilter) {
+        SPage<PurchaseOrderAll> sPage = new SPage<>();
         PageInfo pageInfo = new PageInfo(pageParams);
         SearchFilter filter =  JSONObject.parseObject(searchFilter, SearchFilter.class);
         com.uas.search.b2b.model.PageParams params = searchService.convertPageParams(pageParams, searchFilter);
@@ -78,13 +79,13 @@ public class PurcOrderChangeController {
             List<Sort> sortList = new ArrayList<>();
             sortList.add(new Sort("pu_id", false, Sort.Type.LONG, new Long(1)));
             params.getFilters().put(SearchConstants.SORT_KEY, sortList);
-            return searchService.findEnableToChange(filter.getKeyword(), params);
+            sPage = searchService.findEnableToChange(filter.getKeyword(), params);
         } else {
             pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
             pageInfo.filter("source","B2B");
-            return orderChangeService.findEnableToChange(pageInfo, filter);
+            sPage = orderChangeService.findEnableToChange(pageInfo, filter);
         }
-
+        return orderChangeService.filterChangeItem(sPage);
     }
 
     /**

+ 8 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseOrderChangeDao.java

@@ -125,4 +125,12 @@ public interface PurchaseOrderChangeDao extends JpaSpecificationExecutor<Purchas
 	@Query("select p.id from PurchaseOrderChange p where p.id in :ids and p.agreed=0 and (p.unNeedReply is null or p.unNeedReply=0)")
 	List<Long> findNotReplyId(@Param("ids") List<Long> ids);
 
+	/**
+	 * 帅选出正在变更的单据
+	 * @param orderId 采购单id
+	 * @return
+	 */
+	@Query("select p from PurchaseOrderChange p where p.orderId = :orderId and (p.agreed <> 1 or p.agreed <> 0) and p.unNeedReply=0")
+	List<PurchaseOrderChange> findByOrderId(@Param("orderId") Long orderId);
+
 }

+ 14 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderAllItem.java

@@ -181,6 +181,12 @@ public class PurchaseOrderAllItem {
     @Column(name = "pd_audid")
     private Long audId;
 
+	/**
+	 * 是否在变更中
+	 */
+	@Transient
+    private Boolean isChange;
+
 	/**
 	 * 最后一次回复数量
 	 */
@@ -397,6 +403,14 @@ public class PurchaseOrderAllItem {
 		this.erpDate = erpDate;
 	}
 
+	public Boolean getChange() {
+		return isChange;
+	}
+
+	public void setChange(Boolean change) {
+		isChange = change;
+	}
+
 	public String getProdsource() {
 		// 默认是供应商的物料
 		return StringUtils.isEmpty(prodsource) ? "seller" : prodsource;

+ 8 - 0
src/main/java/com/uas/platform/b2b/service/PurcOrderChangeService.java

@@ -24,6 +24,14 @@ public interface PurcOrderChangeService {
      */
     SPage<PurchaseOrderAll> findEnableToChange(PageInfo pageInfo, SearchFilter searchFilter);
 
+    /**
+     * 过滤变更明细
+     *
+     * @param sPage 分页数据
+     * @return
+     */
+    SPage<PurchaseOrderAll> filterChangeItem(SPage<PurchaseOrderAll> sPage);
+
     /**
      * 新增采购变更单
      *

+ 46 - 14
src/main/java/com/uas/platform/b2b/service/impl/PurcOrderChangeServiceImpl.java

@@ -25,10 +25,7 @@ import org.springframework.ui.ModelMap;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
+import javax.persistence.criteria.*;
 import java.util.*;
 
 /**
@@ -89,12 +86,51 @@ public class PurcOrderChangeServiceImpl implements PurcOrderChangeService {
         Page<PurchaseOrderAll> pageOrders = purchaseOrderAllDao.findAll(new Specification<PurchaseOrderAll>() {
             @Override
             public Predicate toPredicate(Root<PurchaseOrderAll> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+//                Predicate[] predicates = pageInfo.getPredicates(root, query, builder);
+//                if( filter != null) {
+//                    predicates = Arrays.copyOf(predicates, predicates.length + 1);
+//                    SetJoin<PurchaseOrderAll,PurchaseOrderAllItem> join =
+//                            root.join(root.getModel().getSet("orderItems",PurchaseOrderAllItem.class),JoinType.LEFT);
+//                    Predicate p = builder.notEqual(join.get("puid").as(Long.class),963977);
+//                    predicates[predicates.length-1] = p;
+//                }
                 return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
             }
         }, pageInfo);
         return SPageUtils.covertSPage(pageOrders);
     }
 
+    /**
+     * 过滤变更明细
+     *
+     * @param sPage 分页数据
+     * @return
+     */
+    @Override
+    public SPage<PurchaseOrderAll> filterChangeItem(SPage<PurchaseOrderAll> sPage) {
+        for (PurchaseOrderAll orderAll : sPage.getContent()) {
+            Set<PurchaseOrderAllItem> orderAllItems = orderAll.getOrderItems();
+            List<PurchaseOrderChange> orderChanges = changeDao.findByOrderId(orderAll.getId());
+            Set<Long> set = new HashSet<>();
+            if (!CollectionUtils.isEmpty(orderChanges)) {
+                Iterator<PurchaseOrderChange> changeIterator = orderChanges.iterator();
+                while (changeIterator.hasNext()) {
+                    PurchaseOrderChange orderChange = changeIterator.next();
+                    Set<PurchaseOrderChangeItem> changeItems = orderChange.getOrderChangeItems();
+                    for (PurchaseOrderChangeItem changeItem : changeItems) {
+                        set.add(changeItem.getOrderItemId());
+                    }
+                }
+            }
+            for(PurchaseOrderAllItem orderAllItem :orderAllItems) {
+                if (set.contains(orderAllItem.getId())) {
+                    orderAllItem.setChange(true);
+                }
+            }
+        }
+        return sPage;
+    }
+
     /**
      * 新增采购变更单
      *
@@ -105,16 +141,10 @@ public class PurcOrderChangeServiceImpl implements PurcOrderChangeService {
     public ModelMap save(PurchaseOrderChange change) {
         change.setBackStatus((short) Status.NOT_UPLOAD.value());
         change.setReplySendStatus((short) Status.NOT_UPLOAD.value());
-       /* List<PurchaseOrderChangeItem> itemList = changeItemDao.save(change.getOrderChangeItems());
-        if (change.getUnNeedReply() == 1) {// 不需要供应商确认,更新原单据
-            PurchaseOrderInfo orderInfo = orderInfoDao.findOne(change.getOrderId());
-            //TODO 采购单主表信息变更
-            // TODO 采购单明细变更
-        }*/
-       change.setEnUU(SystemSession.getUser().getEnterprise().getUu());
-       change.setUserUU(SystemSession.getUser().getUserUU());
-       change.setSendStatus((short) Status.NOT_UPLOAD.value());
-       change.setStatus((short)Status.NOT_REPLY.value());
+        change.setEnUU(SystemSession.getUser().getEnterprise().getUu());
+        change.setUserUU(SystemSession.getUser().getUserUU());
+        change.setSendStatus((short) Status.NOT_UPLOAD.value());
+        change.setStatus((short)Status.NOT_REPLY.value());
         if (!CollectionUtils.isEmpty(change.getOrderChangeItems())) {
             StringBuffer stringBuffer = new StringBuffer();
             Set<PurchaseOrderChangeItem> itemList = change.getOrderChangeItems();
@@ -209,4 +239,6 @@ public class PurcOrderChangeServiceImpl implements PurcOrderChangeService {
             }
         }, pageInfo);
     }
+
+
 }

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

@@ -24165,6 +24165,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             var checkItems = [];
             // 单选
             $scope.checkOne = function (order) {
+                var changeflag = false;
                 order.checked = !order.checked;
                 if ((order.checked) && ($scope.checkedOrder != null) && ($scope.checkedOrder != order)) {
                     $scope.checkedOrder.checked = false;
@@ -24177,8 +24178,13 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
                 if (order.checked) {
                     $scope.checkedOrder = order;
                     angular.forEach(order.orderItems, function (item) {
-                        item.checked = true;
-                        checkItems.push(item);
+                        if (item.change) {
+                            item.checked = false;
+                            changeflag = true;
+                        } else {
+                            item.checked = true;
+                            checkItems.push(item);
+                        }
                     });
                 } else {
                     $scope.checkedOrder = null;
@@ -24187,11 +24193,20 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
                     });
                     checkItems = [];
                 }
+                if (checkItems.length == 0 && changeflag) {
+                    order.checked =false;
+                    toaster.pop('warning', '提示', "该采购单所有明细正在变更中,在供应商确认之前不可再次变更");
+                }
             };
 
             // 明细
             $scope.checkItem = function (item, order) {
                 // 先判断选中信息
+                if (item.change) {
+                    toaster.pop('warning', '提示', "该明细正在变更中,在供应商确认之前不可再次变更");
+                    item.checked = null;
+                    return;
+                }
                 order.checked = true;
                 if ($scope.checkedOrder != null && order.id != $scope.checkedOrder.id) {
                     $scope.checkedOrder.checked = false;

+ 6 - 6
src/main/webapp/resources/tpl/index/purc/modal/enableOrderList.html

@@ -216,12 +216,11 @@
                 </td>
             </tr>
             </tbody>
-            <tbody ng-repeat="order in $data track by order.id" class="item-body">
-            <tr class="order-hd" ng-dblclick="order.$collapsed=!order.$collapsed"
+            <tbody ng-repeat="order in $data" class="item-body">
+            <tr class="order-hd"
                 ng-class="{'text-bold': order.display>0}">
                 <td class="text-center">
-                    <input type="checkbox" ng-click="checkOne(order)" ng-checked="order.checked"
-                            >
+                    <input type="checkbox" ng-click="checkOne(order)" ng-model="!item.change && order.checked" >
                 </td>
                 <td class="first" colspan="4">
                     <div class="order-main">
@@ -237,8 +236,9 @@
                         class="text-num text-bold"></span>
                 </td>
             </tr>
-            <tr class="order-bd" ng-repeat="item in order.orderItems track by item.id" ng-if="!order.$collapsed ">
-                <td class="text-center"><input type="checkbox" ng-click="checkItem(item, order, $index)" ng-checked="item.checked">
+            <tr class="order-bd" ng-repeat="item in order.orderItems">
+                <td class="text-center">
+                    <input type="checkbox" ng-click="checkItem(item, order, $index)" ng-model="!item.change && item.checked">
                 </td>
                 <td class="product">
                     <div class="text-num order-number" ng-class="{'key': item.key&&order.$showAll}"