Browse Source

应收对账相关功能调整,应付对账数据调整,页面调整

hejq 7 years ago
parent
commit
ada9199643

+ 6 - 44
src/main/java/com/uas/platform/b2b/controller/PurchaseARCheckController.java

@@ -1,6 +1,5 @@
 package com.uas.platform.b2b.controller;
 
-import com.alibaba.dubbo.common.utils.CollectionUtils;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2b.core.util.DateFormatUtils;
@@ -9,9 +8,10 @@ import com.uas.platform.b2b.model.SaleARCheck;
 import com.uas.platform.b2b.model.SaleARCheckItem;
 import com.uas.platform.b2b.model.SaleARCheckReply;
 import com.uas.platform.b2b.model.SearchFilter;
+import com.uas.platform.b2b.result.ResultMap;
 import com.uas.platform.b2b.search.SearchService;
+import com.uas.platform.b2b.service.PurchaseApCheckService;
 import com.uas.platform.b2b.service.SaleARCheckService;
-import com.uas.platform.b2b.service.UserService;
 import com.uas.platform.b2b.support.JxlsExcelView;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
@@ -19,7 +19,6 @@ import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
-import com.uas.search.b2b.model.MultiValue;
 import com.uas.search.b2b.model.SPage;
 import com.uas.search.b2b.model.Sort;
 import com.uas.search.b2b.model.Sort.Type;
@@ -57,47 +56,10 @@ public class PurchaseARCheckController {
 	private SearchService searchService;
 
 	@Autowired
-	private UserService userService;
+    private PurchaseApCheckService apCheckService;
 
 	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
 
-	/**
-	 *  作为买家,获取应付对账单(全部)
-	 *
-	 * @param params 分页参数
-	 * @param searchFilter 过滤条件
-	 * @return
-	 */
-	@RequestMapping(method = RequestMethod.GET)
-	public SPage<SaleARCheck> getReceivedPurchaseApBills(PageParams params, String searchFilter) {
-		logger.log("应付对账单", "获取全部应付对账单");
-		JSONObject jsonObject = JSON.parseObject(searchFilter);
-		String keyword = null;
-		if(jsonObject != null) {
-			keyword = jsonObject.getString("keyword");
-		}
-		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
-		// 当前登录企业作为买家
-		pageParams.getFilters().put("sac_enuu", SystemSession.getUser().getEnterprise().getUu());
-		// TODO 其他过滤条件
-		SearchFilter filter = userService.distribute();
-		if (filter != null && filter.getDistribute() == null) {
-			return null;
-		}
-		if (filter != null && !CollectionUtils.isEmpty(filter.getDistribute())) {
-			List<Object> list = new ArrayList<>();
-			for (Object object : filter.getDistribute()) {
-				list.add(object);
-			}
-			pageParams.getFilters().put("sac_venduu", new MultiValue(list, true));
-		}
-		// 排序条件
-		List<Sort> sortList = new ArrayList<>();
-		sortList.add(new Sort("sac_id", false, Type.INT, 1));
-		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
-		return searchService.searchSaleARCheckIds(keyword, pageParams);
-	}
-
     /**
      *  作为买家,获取应付对账单(全部)
      *
@@ -105,7 +67,7 @@ public class PurchaseARCheckController {
      * @param searchFilter 过滤条件
      * @return 搜索结果
      */
-    @RequestMapping(value = "/list",method = RequestMethod.GET)
+    @RequestMapping(method = RequestMethod.GET)
     public SPage<PurchaseApCheck> getApCheck(PageParams params, String searchFilter) {
         logger.log("应付对账单", "获取全部应付对账单");
         JSONObject jsonObject = JSON.parseObject(searchFilter);
@@ -130,9 +92,9 @@ public class PurchaseARCheckController {
 	 * @return
 	 */
 	@RequestMapping(value = "/{id}", method = RequestMethod.GET)
-	public SaleARCheck getReceivedPurchaseApBillById(@PathVariable("id") Long id) {
+	public ResultMap getReceivedPurchaseApBillById(@PathVariable("id") Long id) {
 		logger.log("应付对账单", "获取单个应付对账单,id:" + id);
-		return saleARCheckService.findById(id);
+		return ResultMap.success(apCheckService.findById(id));
 	}
 
 	/**

+ 29 - 4
src/main/java/com/uas/platform/b2b/model/PurchaseApCheck.java

@@ -1,7 +1,18 @@
 package com.uas.platform.b2b.model;
 
-import javax.persistence.*;
-import java.io.Serializable;
+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.OneToMany;
+import javax.persistence.OrderBy;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import java.io.*;
 import java.util.Date;
 import java.util.Set;
 
@@ -144,11 +155,17 @@ public class PurchaseApCheck implements Serializable {
 	private String custName;
 
 	/**
-	 * 本企业UU
+	 * 供应商UU
 	 */
 	@Column(name = "pa_enuu")
 	private Long enUu;
 
+    /**
+     * 供应商名称
+     */
+	@Transient
+    private String vendorName;
+
 	/**
 	 * 单据编号
 	 */
@@ -341,7 +358,15 @@ public class PurchaseApCheck implements Serializable {
 		this.enUu = enUu;
 	}
 
-	public String getCode() {
+    public String getVendorName() {
+        return vendorName;
+    }
+
+    public void setVendorName(String vendorName) {
+        this.vendorName = vendorName;
+    }
+
+    public String getCode() {
 		return code;
 	}
 

+ 22 - 10
src/main/java/com/uas/platform/b2b/result/ResultMap.java

@@ -1,13 +1,16 @@
 package com.uas.platform.b2b.result;
 
 
+
+import java.io.*;
+
 /**
  * 封装返回数据格式
  *
  * @author hejq
  * @date 2018-10-22 9:15
  */
-public class ResultMap {
+public class ResultMap<T> implements Serializable {
 
     /**
      * 返回状态码
@@ -71,7 +74,7 @@ public class ResultMap {
      * @param code 状态码
      * @param message message提示
      */
-    public ResultMap(int code, String message) {
+    public ResultMap(int code, String message, T data) {
         if (ResultCode.OK.code() == code) {
             this.success = true;
         } else {
@@ -79,6 +82,7 @@ public class ResultMap {
         }
         this.code = code;
         this.message = message;
+        this.data = data;
     }
 
     /**
@@ -88,7 +92,7 @@ public class ResultMap {
      * @return ResultMap
      */
     public static ResultMap success(String message) {
-        ResultMap result = new ResultMap(ResultCode.OK.code(), message);
+        ResultMap result = new ResultMap(ResultCode.OK.code(), message, null);
         return result;
     }
 
@@ -97,9 +101,17 @@ public class ResultMap {
      *
      * @return ResultMap
      */
-    public static ResultMap success() {
-        ResultMap result = new ResultMap(ResultCode.OK.code(), ResultCode.OK.message());
-        return result;
+    public static ResultMap<Object> success(Object data) {
+        return new ResultMap<>(ResultCode.OK.code(), ResultCode.OK.message(), data);
+    }
+
+    /**
+     * 返回成功
+     *
+     * @return ResultMap
+     */
+    public static ResultMap<Object> success() {
+        return new ResultMap<>(ResultCode.OK.code(), ResultCode.OK.message(), null);
     }
 
 
@@ -109,8 +121,8 @@ public class ResultMap {
      * @param e 异常
      * @return ResultMap
      */
-    public static ResultMap error(Exception e) {
-        return new ResultMap(ResultCode.ERROR.code(), e.getMessage());
+    public static ResultMap<Object> error(Exception e) {
+        return new ResultMap<>(ResultCode.ERROR.code(), e.getMessage(), null);
     }
 
     /**
@@ -118,7 +130,7 @@ public class ResultMap {
      *
      * @return ResultMap
      */
-    public static ResultMap error() {
-        return new ResultMap(ResultCode.ERROR.code(), ResultCode.ERROR.message());
+    public static ResultMap<Object> error() {
+        return new ResultMap<>(ResultCode.ERROR.code(), ResultCode.ERROR.message(), null);
     }
 }

+ 11 - 1
src/main/java/com/uas/platform/b2b/service/impl/PurchaseApCheckServiceImpl.java

@@ -2,11 +2,13 @@ package com.uas.platform.b2b.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.dao.CommonDao;
+import com.uas.platform.b2b.dao.EnterpriseDao;
 import com.uas.platform.b2b.dao.PurchaseApCheckDao;
 import com.uas.platform.b2b.dao.PurchaseApCheckDoneDao;
 import com.uas.platform.b2b.dao.PurchaseApCheckItemDao;
 import com.uas.platform.b2b.dao.PurchaseApCheckTodoDao;
 import com.uas.platform.b2b.event.PurchaseApCheckReplyReleaseEvent;
+import com.uas.platform.b2b.model.Enterprise;
 import com.uas.platform.b2b.model.OrderRedDotAll;
 import com.uas.platform.b2b.model.OrderType;
 import com.uas.platform.b2b.model.PurchaseApCheck;
@@ -73,6 +75,9 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
 	@Autowired
 	private OrderRedDotService redDotService;
 
+	@Autowired
+    private EnterpriseDao enterpriseDao;
+
 	@Autowired
     private VendorService vendorService;
 
@@ -170,7 +175,12 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
 
 	@Override
 	public PurchaseApCheck findById(Long id) {
-		return purchaseApCheckDao.findOne(id);
+        PurchaseApCheck apCheck = purchaseApCheckDao.findOne(id);
+        if (null != apCheck) {
+            Enterprise enterprise = enterpriseDao.findOne(apCheck.getEnUu());
+            apCheck.setVendorName(enterprise.getEnName());
+        }
+		return apCheck;
 	}
 
 	@Override

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

@@ -9399,7 +9399,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             var total = 0;
             if (check.items) {
                 angular.forEach(check.items, function (value) {
-                    total += value.qty;
+                    total += value.checkQty;
                 });
             }
             return total;
@@ -9424,7 +9424,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
         BaseService.scrollBackToTop();
         var loadData = function () {
             FaArCheck.get({id: $stateParams.id}, function (data) {
-                $scope.order = data;
+                $scope.order = data.data;
                 $scope.loading = false;
             });
         };

+ 6 - 6
src/main/webapp/resources/tpl/index/fa/apCheck.html

@@ -146,8 +146,13 @@
 				<div class="btn-group btn-group-sm btn-group-justified">
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"
-							ng-class="{'btn-info':active=='all'}" ng-click="setActive('all')">全部</button>
+							ng-class="{'btn-info':active=='all'}" ng-click="setActive('all')">未对账</button>
 					</div>
+                    <div class="btn-group btn-group-sm">
+                        <button type="button" class="btn btn-default btn-line"
+                                ng-class="{'btn-info':active=='todo'}"
+                                ng-click="setActive('todo')">待确认</button>
+                    </div>
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"
 								ng-class="{'btn-info':active=='done'}"
@@ -155,11 +160,6 @@
 							<b class="new-dot" ng-if="unread.replied > 0">{{unread.replied>99?'99+':unread.replied}}</b>
 						</button>
 					</div>
-					<div class="btn-group btn-group-sm">
-						<button type="button" class="btn btn-default btn-line"
-							ng-class="{'btn-info':active=='todo'}"
-							ng-click="setActive('todo')">未对账</button>
-					</div>
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"
 							ng-class="{'btn-info':active=='end'}" ng-click="setActive('end')">已作废

+ 5 - 21
src/main/webapp/resources/tpl/index/fa/arCheck.html

@@ -202,7 +202,6 @@
 			<th width="180">明细条目</th>
 			<th width="180">商品总数</th>
 			<th width="100">对账结果</th>
-			<th width="100">操作</th>
 		</tr>
 		</thead>
 		<tbody ng-if="$data.length === 0">
@@ -224,13 +223,13 @@
 			<tr>
 				<td class="first info" colspan="4">
 					<div class="">
-						<span class="text-num" title="录单时间">{{::check.date | date:'MM月dd日 HH:mm'}} <i class="fa fa-clock-o"></i></span>&nbsp;&nbsp;&nbsp;
-						<span><i class="fa fa-star" ng-class="{'text-default':check.status==201}"></i> {{::check.vendor.enName}}</span>
+						<span class="text-num" title="录单时间">{{::check.recordDate | date:'MM月dd日 HH:mm'}} <i class="fa fa-clock-o"></i></span>&nbsp;&nbsp;&nbsp;
+						<span><i class="fa fa-star" ng-class="{'text-default':check.status==201}"></i> {{::check.vendorName}}</span>
 						<span>单据编号:</span>
 						<span class="text-num"><a ui-sref="fa.arCheck_detail({id:check.id})" title="点击查看详情">{{::check.code}}</a></span>
 					</div>
 					<div class="static">
-						<p class="f14 text-num">{{::check.fromDate | date:'yyyy/MM/dd'}} - {{::check.toDate | date:'yyyy/MM/dd'}}</p>
+						<p class="f14 text-num">{{::check.beginDate | date:'yyyy/MM/dd'}} - {{::check.endDate | date:'yyyy/MM/dd'}}</p>
 						<p>
 							<strong class="text-num">{{::check.checkAmount | number:6}}</strong>
 							<span class="text-number">{{::check.currency}}</span><br>
@@ -243,23 +242,8 @@
 						</p>
 					</div>
 				</td>
-				<td class="status" colspan="2">
-					<div ng-if="check.status == 200" class="text-center text-muted f14"><br>还未开始对账!</div>
-					<div ng-if="check.status == 201 && check.items.length == check.agree" class="text-center text-muted f14">
-						<br> <i class="fa fa-check-square-o"></i> 已全部确认
-					</div>
-					<div ng-if="check.status == 201 && check.items.length != check.agree" class="text-center text-muted f14">
-						已开始对账,但未全部确认
-					</div>
-					<div ng-if="check.status == 201 && check.items.length != check.agree">
-						<div class="text-success text-bold"><i class="fa fa-smile-o fa-lg fa-fw"></i>已确认: {{::check.agree}}</div>
-						<div class="text-warning text-bold"><i class="fa fa-frown-o fa-lg fa-fw"></i>不同意: {{::check.disagree}}</div>
-						<div class="text-muted text-bold"><i class="fa fa-meh-o fa-lg fa-fw"></i>未对账: {{check.items.length - check.agree - check.disagree}}</div>
-					</div>
-					<!-- <a ng-if="check.status == 200 || check.items.length != check.agree" class="operate operate-undo text-center" 
-						ui-sref="fa.arCheck_detail({id:check.id})" target="_blank">立即开始对账</a>
-					<a ng-if="check.status == 201 && check.items.length == check.agree" class="operate operate-done text-center" 
-						ui-sref="fa.arCheck_detail({id:check.id})" target="_blank">查看详情</a> -->
+				<td class="status" colspan="1">
+					<span ng-bind="::check.checkStatus"></span>
 				</td>
 			</tr>
 		</tbody>

+ 21 - 87
src/main/webapp/resources/tpl/index/fa/arCheck_detail.html

@@ -50,45 +50,37 @@
 		<div class="row row-sm item">
 			<div class="col-xs-6">
 				<span class="title">供应商</span>
-				<div class="content" ng-bind="::order.vendor.enName"></div>
+				<div class="content" ng-bind="::order.vendorName"></div>
 			</div>
 			<div class="col-xs-6">
 				<span class="title">对账期间</span>
-				<div class="content text-num">{{::order.fromDate | date:'yyyy/MM/dd'}} - {{::order.toDate | date:'yyyy/MM/dd'}}</div>
+				<div class="content text-num">{{::order.beginDate | date:'yyyy/MM/dd'}} - {{::order.endDate | date:'yyyy/MM/dd'}}</div>
 			</div>
 		</div>
 		<div class="row row-sm item">
-			<div class="col-xs-3">
+			<div class="col-xs-6">
 				<span class="title">单据编号</span>
 				<div class="content text-num" ng-bind="::order.code"></div>
 			</div>
-			<div class="col-xs-3">
-				<span class="title">录单日期</span>
-				<div class="content" ng-bind="::order.date | date:'MM月dd日 HH:mm'"></div>
-			</div>
-			<div class="col-xs-3">
-				<span class="title">录单人</span>
-				<div class="content" ng-bind="::order.recorder"></div>
-			</div>
-			<div class="col-xs-3">
-				<span class="title">审批人</span>
-				<div class="content" ng-bind="::order.auditor"></div>
-			</div>
+            <div class="col-xs-6">
+                <span class="title">应收日期</span>
+                <div class="content" ng-bind="::order.apDate | date:'MM月dd日'"></div>
+            </div>
 		</div>
 		<div class="row row-sm item">
-			<div class="col-xs-3">
-				<span class="title">应收日期</span>
-				<div class="content" ng-bind="::order.arDate | date:'MM月dd日'"></div>
-			</div>
-			<div class="col-xs-3">
-				<span class="title">对方业务员</span>
-				<div class="content" ng-bind="::order.sellerName"></div>
-			</div>
+            <div class="col-xs-6">
+                <span class="title">录单日期</span>
+                <div class="content" ng-bind="::order.recordDate | date:'MM月dd日 HH:mm'"></div>
+            </div>
+            <div class="col-xs-6">
+                <span class="title">录单人</span>
+                <div class="content" ng-bind="::order.recorder"></div>
+            </div>
 		</div>
-		<div class="row row-sm item" ng-if="order.remark">
+		<div class="row row-sm item" ng-if="order.reason">
 			<div class="col-xs-9">
-				<span class="title">供应商备注</span>
-				<div class="content" ng-bind="::order.remark"></div>
+				<span class="title">备注</span>
+				<div class="content" ng-bind="::order.reason"></div>
 			</div>
 		</div>
 		<div class="title-div" style="border-bottom: 1px dashed #3f84f6;">
@@ -141,7 +133,6 @@
 						<th width="80">单价</th>
 						<th width="120">对账数量</th>
 						<th width="120">对账金额</th>
-						<th width="100">操作</th>
 					</tr>
 				</thead>
 				<tbody>
@@ -157,12 +148,8 @@
 						</td>
 						<td class="text-muted text-num">
 							<div>
-								<i class="fa fa-file-text-o fa-fw" title="采购订单编号"></i> 
-								<span ng-bind="::item.poCode"></span>
-							</div>
-							<div>
-								<i class="fa fa-share-square-o fa-fw" title="供应商出库单号"></i> 
-								<span ng-bind="::item.inoutCode"></span> 第<span ng-bind="item.sourceNumber"></span>行
+								<i class="fa fa-share-square-o fa-fw" title="出库单号"></i>
+								<span ng-bind="::item.orderCode"></span> 第<span ng-bind="item.orderDetno"></span>行
 							</div>
 						</td>
 						<td class="text-center">
@@ -172,64 +159,11 @@
 						<td class="text-center">
 							<div>
 								<span class="badge" ng-if="item.status==201 && !item.agreed">供</span> 
-								<span class="text-num text-bold" ng-bind="::item.qty | number"></span>
-							</div>
-							<div ng-if="item.status==201 && !item.agreed">
-								<span class="badge badge-info">我</span> 
-								<span class="text-num text-bold" ng-bind="::item.replyQty | number"></span>
-							</div>
-							<div ng-if="item.$editing">
-								<input ng-model="item.$replyQty" class="form-control input-xs" type="number" placeholder="确认数量">
+								<span class="text-num text-bold" ng-bind="::item.checkQty | number"></span>
 							</div>
 						</td>
 						<td>
 							<div class="text-num text-inverse text-bold" ng-bind="::item.amount | number:6"></div>
-							<div ng-if="item.$editing">
-								<input ng-model="item.$replyRemark" class="form-control input-xs" type="text" placeholder="确认备注">
-							</div>
-							<div ng-if="item.replyQty > 0" class="dropdown text-center">
-								<a href="javascript:void(0);" class="dropdown-toggle text-default"
-									ng-mouseover="getReplies(item)">对账记录<i class="fa fa-fw fa-angle-down"></i></a>
-								<div class="dropdown-menu dropdown-menu-right pane" style="width: 270px;">
-									<div class="pane-body">
-										<ul class="list-unstyled list-menu">
-											<li ng-repeat="reply in ::item.replies">
-												<div ng-if="reply.type=='v'" class="text-left">
-													<div ng-class="{'text-inverse': $last}">
-														<span class="pull-right text-muted" ng-bind="reply.date | date:'MM-dd HH:mm'"></span>
-														<span class="badge">供</span> 数量:{{::reply.qty}}
-													</div>
-													<div class="text-muted">{{reply.remark}}</div>
-												</div>
-												<div ng-if="reply.type=='c'" class="text-right"
-													ng-class="{'text-inverse': $last}">
-													<div>
-														<span class="pull-left text-muted" ng-bind="reply.date | date:'MM-dd HH:mm'"></span>
-														{{::reply.qty}}:<span ng-bind="reply.recorder"></span>  <span class="badge badge-info">我</span> 
-													</div>
-													<div class="text-muted">{{reply.remark}}</div>
-												</div>
-											</li>
-										</ul>
-									</div>
-								</div>
-							</div>
-						</td>
-						<td class="text-center">
-							<div ng-if="item.status == 200 && !item.$editing">
-								<a ng-click="onReplyClick(item, true)" class="">确认<i class="fa fa-check-square-o"></i></a><br>
-								<a ng-click="item.$editing = true" class="text-muted f12">不同意</a>
-							</div>
-							<div ng-if="item.$editing">
-								<a ng-click="item.$editing = false" class="text-muted f12">取消</a><br>
-								<a ng-click="onReplyClick(item, false)" class="">确认对账</a>
-							</div>
-							<div ng-if="item.status == 201 && item.agreed">
-								<span class="label label-success">已确认</span>
-							</div>
-							<div ng-if="item.waiting">
-								<span class="text-muted f12">您确认的数量正在等待供应商确认...</span>
-							</div>
 						</td>
 					</tr>
 					<tr>