Просмотр исходного кода

应收对账相关功能调整

hejq 7 лет назад
Родитель
Сommit
ecabbe019e

+ 32 - 10
src/main/java/com/uas/platform/b2b/controller/PurchaseARCheckController.java

@@ -4,6 +4,7 @@ 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;
+import com.uas.platform.b2b.model.PurchaseApCheck;
 import com.uas.platform.b2b.model.SaleARCheck;
 import com.uas.platform.b2b.model.SaleARCheckItem;
 import com.uas.platform.b2b.model.SaleARCheckReply;
@@ -26,9 +27,12 @@ import com.uas.search.b2b.util.SearchConstants;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Sort.Direction;
-import org.springframework.stereotype.Controller;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.servlet.ModelAndView;
 
 import java.util.ArrayList;
@@ -42,7 +46,7 @@ import java.util.List;
  * 
  */
 @SuppressWarnings("deprecation")
-@Controller
+@RestController
 @RequestMapping("/purchase/arCheck")
 public class PurchaseARCheckController {
 
@@ -65,7 +69,6 @@ public class PurchaseARCheckController {
 	 * @return
 	 */
 	@RequestMapping(method = RequestMethod.GET)
-	@ResponseBody
 	public SPage<SaleARCheck> getReceivedPurchaseApBills(PageParams params, String searchFilter) {
 		logger.log("应付对账单", "获取全部应付对账单");
 		JSONObject jsonObject = JSON.parseObject(searchFilter);
@@ -95,6 +98,31 @@ public class PurchaseARCheckController {
 		return searchService.searchSaleARCheckIds(keyword, pageParams);
 	}
 
+    /**
+     *  作为买家,获取应付对账单(全部)
+     *
+     * @param params 分页参数
+     * @param searchFilter 过滤条件
+     * @return
+     */
+    @RequestMapping(value = "/list",method = RequestMethod.GET)
+    public SPage<PurchaseApCheck> getApcheck(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("pa_custuu", SystemSession.getUser().getEnterprise().getUu());
+        // 排序条件
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("sac_id", false, Type.INT, new Long(1)));
+        pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+        return searchService.searchPurchaseApCheckIds(keyword, pageParams);
+    }
+
 	/**
 	 * 作为买家,根据ID查找应付对账单(含明细)
 	 * 
@@ -102,7 +130,6 @@ public class PurchaseARCheckController {
 	 * @return
 	 */
 	@RequestMapping(value = "/{id}", method = RequestMethod.GET)
-	@ResponseBody
 	public SaleARCheck getReceivedPurchaseApBillById(@PathVariable("id") Long id) {
 		logger.log("应付对账单", "获取单个应付对账单,id:" + id);
 		return saleARCheckService.findById(id);
@@ -114,7 +141,6 @@ public class PurchaseARCheckController {
 	 * @return SaleARCheck
 	 */
 	@RequestMapping(value = "/page/done", method = RequestMethod.GET)
-	@ResponseBody
 	public Page<SaleARCheck> getAllDoneCheck(PageParams params, String keyword, String searchFilter) {
 		logger.log("应付对账单", "获取全部已确认应付对账单");
 		PageInfo info = new PageInfo(params);
@@ -134,7 +160,6 @@ public class PurchaseARCheckController {
 	 * @return SaleARCheck
 	 */
 	@RequestMapping(value = "/page/todo", method = RequestMethod.GET)
-	@ResponseBody
 	public Page<SaleARCheck> getAllTodoCheck(PageParams params, String keyword, String searchFilter) {
 		logger.log("应付对账单", "获取全部已确认应付对账单");
 		PageInfo info = new PageInfo(params);
@@ -155,7 +180,6 @@ public class PurchaseARCheckController {
 	 * @param itemId
 	 */
 	@RequestMapping(value = "/items/{itemId}/reply", method = RequestMethod.POST, params = "agreed=true")
-	@ResponseBody
 	public void agreeCheckItem(@RequestBody String json, @PathVariable("itemId") Long itemId) {
 		SaleARCheckReply reply = FlexJsonUtils.fromJson(json, SaleARCheckReply.class);
 		SaleARCheckItem item = new SaleARCheckItem();
@@ -173,7 +197,6 @@ public class PurchaseARCheckController {
 	 * @param itemId
 	 */
 	@RequestMapping(value = "/items/{itemId}/reply", method = RequestMethod.POST, params = "agreed=false")
-	@ResponseBody
 	public void disAgreeCheckItem(@RequestBody String json, @PathVariable("itemId") Long itemId) {
 		SaleARCheckReply reply = FlexJsonUtils.fromJson(json, SaleARCheckReply.class);
 		SaleARCheckItem item = new SaleARCheckItem();
@@ -191,7 +214,6 @@ public class PurchaseARCheckController {
 	 * @param itemId
 	 */
 	@RequestMapping(value = "/items/{itemId}/reply", method = RequestMethod.GET)
-	@ResponseBody
 	public List<SaleARCheckReply> getReplies(@PathVariable("itemId") Long itemId) {
 		List<SaleARCheckReply> replies = saleARCheckService.getReplies(itemId);
 		return replies;

+ 11 - 0
src/main/java/com/uas/platform/b2b/controller/SaleApCheckController.java

@@ -202,6 +202,17 @@ public class SaleApCheckController {
 		return erpProdIODetailService.findXlsApChecks(distributes, searchKeyWord, fromDate, endDate);
 	}
 
+    /**
+     * 获取客户
+     * @param keyword 关键字
+     * @param params 分页参数
+     * @return 符合条件的客户信息
+     */
+    @RequestMapping(value = "/customer", method = RequestMethod.GET)
+    public SPage<Vendor> getCustomers(PageParams params, String keyword) {
+        return purchaseApCheckService.getCustomerInfo(params, keyword);
+    }
+
 	/**
 	 * 保存生成的应收对账单主记录
      *

+ 1 - 28
src/main/java/com/uas/platform/b2b/controller/VendorController.java

@@ -4,19 +4,16 @@ import com.alibaba.fastjson.JSON;
 import com.uas.platform.b2b.model.Distribute;
 import com.uas.platform.b2b.model.OrderType;
 import com.uas.platform.b2b.model.Role;
-import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.b2b.model.User;
 import com.uas.platform.b2b.model.Vendor;
 import com.uas.platform.b2b.model.VendorContact;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.OrderRedDotService;
-import com.uas.platform.b2b.service.UserService;
 import com.uas.platform.b2b.service.VendorService;
 import com.uas.platform.b2b.support.JxlsExcelView;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.PageParams;
-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;
@@ -24,7 +21,6 @@ import com.uas.search.b2b.util.SearchConstants;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.ui.ModelMap;
-import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -56,9 +52,6 @@ public class VendorController {
 	@Autowired
 	private SearchService searchService;
 
-	@Autowired
-	private UserService userService;
-
 	@Autowired
     private OrderRedDotService redDotService;
 
@@ -110,27 +103,7 @@ public class VendorController {
 	@RequestMapping(value = "/customer/info/search", method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<Vendor> getCustomers(PageParams params, String keyword) {
-		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, null);
-		List<Object> vendInfo = new ArrayList<>();
-        vendInfo.add(SystemSession.getUser().getEnterprise().getUu());
-        vendInfo.add(SystemSession.getUser().getEnterprise().getEnBussinessCode());
-		pageParams.getFilters().put("ve_vendenuu", new MultiValue(vendInfo, false));
-		pageParams.getFilters().put("ve_custswitch", Constant.YES);
-		List<Sort> sortList = new ArrayList<>();
-		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("ve_myenuu", new MultiValue(list, true));
-		}
-		sortList.add(new Sort("ve_id", false, Type.INT, new Long(1)));
-		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
-		return searchService.searchCustCheckIds(keyword, pageParams);
+		return vendorService.getCustomerInfo(params, keyword);
 	}
 
 	/**

+ 10 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseApCheckDao.java

@@ -37,4 +37,14 @@ public interface PurchaseApCheckDao extends JpaSpecificationExecutor<PurchaseApC
 	 */
 	@Query("select count(p), p.checkStatus from PurchaseApCheck p where p.id in :ids group by p.checkStatus")
 	List<Object[]> getUnreadCountEveryStatus(@Param("ids") List<Long> ids);
+
+    /**
+     * 根据客户UU和供应商UU获取最后一次对账金额
+     *
+     * @param myEnUU 客户UU
+     * @param enUU 供应商UU
+     * @return 最后一次对账信息
+     */
+	@Query(value = "select p.* from purc$apcheck p where p.pa_custuu = :myEnUU and p.pa_enuu = :enUU order by p.pa_recorddate desc limit 1", nativeQuery = true)
+    PurchaseApCheck findByCustomerUUAndEnUU(@Param("myEnUU") Long myEnUU, @Param("enUU") Long enUU);
 }

+ 3 - 3
src/main/java/com/uas/platform/b2b/listener/GlobalExceptionHandler.java

@@ -24,8 +24,8 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
+import java.io.*;
+import java.net.*;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -76,7 +76,7 @@ public class GlobalExceptionHandler {
      */
     @ResponseBody
     @ExceptionHandler(value = Exception.class)
-    public ResponseEntity<String> defaultErrorHandler(HttpServletRequest request, Exception e, HttpServletResponse response) throws UnsupportedEncodingException {
+    public ResponseEntity defaultErrorHandler(HttpServletRequest request, Exception e, HttpServletResponse response) throws UnsupportedEncodingException {
         String jsonStr = JSON.toJSONString(e.getStackTrace());
         List<ExceptionMsg> msgList = FlexJsonUtils.fromJsonArray(jsonStr, ExceptionMsg.class);
         List<ExceptionMsg> msgs = new ArrayList<>();

+ 39 - 13
src/main/java/com/uas/platform/b2b/model/Vendor.java

@@ -1,6 +1,14 @@
 package com.uas.platform.b2b.model;
 
-import java.io.Serializable;
+import com.alibaba.fastjson.annotation.JSONField;
+import com.uas.platform.b2b.erp.model.InquiryVendorInfo;
+import com.uas.platform.core.persistence.Logger;
+import com.uas.platform.core.persistence.OtherUserUU;
+import com.uas.platform.core.persistence.StatusColumn;
+import com.uas.platform.core.persistence.UserUU;
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
 
 import javax.persistence.Cacheable;
 import javax.persistence.CascadeType;
@@ -14,17 +22,8 @@ import javax.persistence.JoinColumn;
 import javax.persistence.OneToOne;
 import javax.persistence.Table;
 import javax.persistence.Transient;
-
-import com.uas.platform.b2b.erp.model.InquiryVendorInfo;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.hibernate.annotations.Cache;
-import org.hibernate.annotations.CacheConcurrencyStrategy;
-
-import com.alibaba.fastjson.annotation.JSONField;
-import com.uas.platform.core.persistence.Logger;
-import com.uas.platform.core.persistence.OtherUserUU;
-import com.uas.platform.core.persistence.StatusColumn;
-import com.uas.platform.core.persistence.UserUU;
+import java.io.*;
+import java.util.Date;
 
 @Entity
 @Table(name = "purc$vendors", indexes = {@Index(name = "index_vendor_status", columnList = "ve_status"), @Index(name = "index_vendor_myen_venden", columnList = "ve_myenuu, ve_vendenuu", unique = true)})
@@ -163,6 +162,18 @@ public class Vendor implements Serializable {
 	@Column(name = "ve_erpstatus")
 	private Integer erpstatus;
 
+    /**
+     * 最近一次对账时间
+     */
+	@Transient
+    private Date lastCheckDate;
+
+    /**
+     * 最近一次对账金额
+     */
+	@Transient
+    private Double lastCheckCount;
+
 	public Long getId() {
 		return id;
 	}
@@ -328,8 +339,23 @@ public class Vendor implements Serializable {
 		this.erpstatus = erpstatus;
 	}
 
+    public Date getLastCheckDate() {
+        return lastCheckDate;
+    }
+
+    public void setLastCheckDate(Date lastCheckDate) {
+        this.lastCheckDate = lastCheckDate;
+    }
+
+    public Double getLastCheckCount() {
+        return lastCheckCount;
+    }
+
+    public void setLastCheckCount(Double lastCheckCount) {
+        this.lastCheckCount = lastCheckCount;
+    }
 
-	public InquiryVendorInfo covert() {
+    public InquiryVendorInfo covert() {
 		InquiryVendorInfo info = new InquiryVendorInfo();
 		info.setB2b_id(this.id);
 		info.setVe_uu(String.valueOf(this.vendEnUU));

+ 14 - 2
src/main/java/com/uas/platform/b2b/service/PurchaseApCheckService.java

@@ -5,7 +5,10 @@ import com.uas.platform.b2b.model.PurchaseApCheckDone;
 import com.uas.platform.b2b.model.PurchaseApCheckItem;
 import com.uas.platform.b2b.model.PurchaseApCheckTodo;
 import com.uas.platform.b2b.model.SearchFilter;
+import com.uas.platform.b2b.model.Vendor;
 import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import com.uas.search.b2b.model.SPage;
 import org.springframework.data.domain.Page;
 
 import java.util.HashMap;
@@ -123,8 +126,17 @@ public interface PurchaseApCheckService {
 
 	/**
 	 * 获取明细表中已开票数
-	 *
-	 * @return
+	 * @param id 发票id
+	 * @return 已开票数
 	 */
     Double getBilledByItemId(Long id);
+
+    /**
+     * 对账获取客户信息
+     *
+     * @param params 分页参数
+     * @param keyword 关键字
+     * @return 搜索结果
+     */
+    SPage<Vendor> getCustomerInfo(PageParams params, String keyword);
 }

+ 11 - 0
src/main/java/com/uas/platform/b2b/service/VendorService.java

@@ -6,6 +6,8 @@ import com.uas.platform.b2b.model.Product;
 import com.uas.platform.b2b.model.Vendor;
 import com.uas.platform.b2b.model.VendorContact;
 import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import com.uas.search.b2b.model.SPage;
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
 
@@ -144,4 +146,13 @@ public interface VendorService {
 	 * @return 物料型号和品牌值对List
 	 */
 	List<Product> getProductAssociate(String field, String condition);
+
+    /**
+     * 获取客户详情
+     *
+     * @param params 分页参数
+     * @param keyword 关键字
+     * @return 搜索结果
+     */
+    SPage<Vendor> getCustomerInfo(PageParams params, String keyword);
 }

+ 28 - 0
src/main/java/com/uas/platform/b2b/service/impl/PurchaseApCheckServiceImpl.java

@@ -14,13 +14,17 @@ import com.uas.platform.b2b.model.PurchaseApCheckItem;
 import com.uas.platform.b2b.model.PurchaseApCheckTodo;
 import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.b2b.model.SourceForApcheck;
+import com.uas.platform.b2b.model.Vendor;
 import com.uas.platform.b2b.service.OrderRedDotService;
 import com.uas.platform.b2b.service.PurchaseApCheckService;
+import com.uas.platform.b2b.service.VendorService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
+import com.uas.search.b2b.model.SPage;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
@@ -68,6 +72,9 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
 	@Autowired
 	private OrderRedDotService redDotService;
 
+	@Autowired
+    private VendorService vendorService;
+
 	@Override
 	public List<PurchaseApCheck> findNotUploadAPcheck() {
 		return purchaseApCheckDao.findByCustUuAndStatusAndCheckStatus(SystemSession.getUser().getEnterprise().getUu(),
@@ -452,4 +459,25 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
     public Double getBilledByItemId(Long id) {
         return purchaseApCheckItemDao.getBilledById(id);
     }
+
+    /**
+     * 对账获取客户信息
+     *
+     * @param params  分页参数
+     * @param keyword 关键字
+     * @return 搜索结果
+     */
+    @Override
+    public SPage<Vendor> getCustomerInfo(PageParams params, String keyword) {
+        SPage<Vendor> vendorSPage = vendorService.getCustomerInfo(params, keyword);
+        vendorSPage.getContent().stream().filter(customer -> customer.getApcheck() == 1)
+            .forEach(customer -> {
+                PurchaseApCheck apCheck = purchaseApCheckDao.findByCustomerUUAndEnUU(customer.getMyEnUU(), SystemSession.getUser().getEnterprise().getUu());
+                if (null != apCheck) {
+                    customer.setLastCheckDate(apCheck.getRecordDate());
+                    customer.setLastCheckCount(apCheck.getCheckAmount());
+                }
+            });
+        return vendorSPage;
+    }
 }

+ 45 - 0
src/main/java/com/uas/platform/b2b/service/impl/VendorsServiceImpl.java

@@ -11,12 +11,20 @@ import com.uas.platform.b2b.erp.model.VendorRecommend;
 import com.uas.platform.b2b.model.Distribute;
 import com.uas.platform.b2b.model.Enterprise;
 import com.uas.platform.b2b.model.Product;
+import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.b2b.model.Vendor;
 import com.uas.platform.b2b.model.VendorContact;
+import com.uas.platform.b2b.search.SearchService;
+import com.uas.platform.b2b.service.UserService;
 import com.uas.platform.b2b.service.VendorService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+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.util.SearchConstants;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
@@ -59,6 +67,12 @@ public class VendorsServiceImpl implements VendorService {
 	@Autowired
 	private com.uas.platform.b2b.erp.service.VendorService vendorService;
 
+    @Autowired
+    private SearchService searchService;
+
+    @Autowired
+    private UserService userService;
+
     /**
      * 应用来源
      */
@@ -367,4 +381,35 @@ public class VendorsServiceImpl implements VendorService {
 		return commonDao.query(productSql, Product.class);
 	}
 
+    /**
+     * 获取客户详情
+     *
+     * @param params  分页参数
+     * @param keyword 关键字
+     * @return 搜索结果
+     */
+    @Override
+    public SPage<Vendor> getCustomerInfo(PageParams params, String keyword) {
+        com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, null);
+        List<Object> vendInfo = new ArrayList<>();
+        vendInfo.add(SystemSession.getUser().getEnterprise().getUu());
+        vendInfo.add(SystemSession.getUser().getEnterprise().getEnBussinessCode());
+        pageParams.getFilters().put("ve_vendenuu", new MultiValue(vendInfo, false));
+        pageParams.getFilters().put("ve_custswitch", Constant.YES);
+        List<Sort> sortList = new ArrayList<>();
+        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("ve_myenuu", new MultiValue(list, true));
+        }
+        sortList.add(new Sort("ve_id", false, Sort.Type.INT, new Long(1)));
+        pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+        return searchService.searchCustCheckIds(keyword, pageParams);
+    }
 }

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

@@ -15167,7 +15167,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
                 $scope.loading = true;
                 var pageParams = params.url();
                 pageParams.keyword = $scope.keyword;
-                VendorService.customer.get(BaseService.parseParams(pageParams), function (page) {
+                FaApCheck.customer(BaseService.parseParams(pageParams), function (page) {
                     $scope.loading = false;
                     if (page) {
                         params.total(page.totalElement);

+ 4 - 0
src/main/webapp/resources/js/index/services/Fa.js

@@ -117,6 +117,10 @@ define([ 'ngResource'], function() {
 				method: 'GET',
 				isArray: true
 			},
+            customer: {
+                url: 'sale/apCheck/customer',
+                method: 'GET'
+            },
 			getAllCustomers: {
 				url: 'sale/apCheck/getAllCustomers',
 				method: 'GET',