Sfoglia il codice sorgente

对账相关功能调整

hejq 7 anni fa
parent
commit
e9efbe3383

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

@@ -93,7 +93,7 @@ public class PurchaseARCheckController {
 		}
 		// 排序条件
 		List<Sort> sortList = new ArrayList<>();
-		sortList.add(new Sort("sac_id", false, Type.INT, new Long(1)));
+		sortList.add(new Sort("sac_id", false, Type.INT, 1));
 		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
 		return searchService.searchSaleARCheckIds(keyword, pageParams);
 	}
@@ -103,10 +103,10 @@ public class PurchaseARCheckController {
      *
      * @param params 分页参数
      * @param searchFilter 过滤条件
-     * @return
+     * @return 搜索结果
      */
     @RequestMapping(value = "/list",method = RequestMethod.GET)
-    public SPage<PurchaseApCheck> getApcheck(PageParams params, String searchFilter) {
+    public SPage<PurchaseApCheck> getApCheck(PageParams params, String searchFilter) {
         logger.log("应付对账单", "获取全部应付对账单");
         JSONObject jsonObject = JSON.parseObject(searchFilter);
         String keyword = null;
@@ -118,7 +118,7 @@ public class PurchaseARCheckController {
         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)));
+        sortList.add(new Sort("pa_id", false, Type.INT, 1));
         pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
         return searchService.searchPurchaseApCheckIds(keyword, pageParams);
     }

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

@@ -76,7 +76,7 @@ public class GlobalExceptionHandler {
      */
     @ResponseBody
     @ExceptionHandler(value = Exception.class)
-    public ResponseEntity defaultErrorHandler(HttpServletRequest request, Exception e, HttpServletResponse response) throws UnsupportedEncodingException {
+    public ResponseEntity<String> 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<>();
@@ -99,6 +99,6 @@ public class GlobalExceptionHandler {
         }
         HttpHeaders headers = new HttpHeaders();
         headers.add("Content-Type", "application/text; charset=utf-8");
-        return new ResponseEntity(e.getMessage(), headers, HttpStatus.INTERNAL_SERVER_ERROR);
+        return new ResponseEntity<>(e.getMessage(), headers, HttpStatus.INTERNAL_SERVER_ERROR);
     }
 }

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

@@ -172,7 +172,7 @@ public class Vendor implements Serializable {
      * 最近一次对账金额
      */
 	@Transient
-    private Double lastCheckCount;
+    private Double uncheckedCount;
 
 	public Long getId() {
 		return id;
@@ -347,12 +347,12 @@ public class Vendor implements Serializable {
         this.lastCheckDate = lastCheckDate;
     }
 
-    public Double getLastCheckCount() {
-        return lastCheckCount;
+    public Double getUncheckedCount() {
+        return uncheckedCount;
     }
 
-    public void setLastCheckCount(Double lastCheckCount) {
-        this.lastCheckCount = lastCheckCount;
+    public void setUncheckedCount(Double uncheckedCount) {
+        this.uncheckedCount = uncheckedCount;
     }
 
     public InquiryVendorInfo covert() {

+ 72 - 0
src/main/java/com/uas/platform/b2b/model/util/UnCheckedCountSqls.java

@@ -0,0 +1,72 @@
+package com.uas.platform.b2b.model.util;
+
+import com.uas.platform.b2b.publicapi.model.UsoftRate;
+
+/**
+ * 未对账总额sql查询语句
+ *
+ * @author hejq
+ * @date 2018-12-04 9:48
+ */
+public class UnCheckedCountSqls {
+
+
+    /**
+     * 货款调账未对账金额查询语句
+     */
+    public static final String ADJUSTMENT_COUNT_SQL = "select coalesce(sum((aa_qty - coalesce(aa_ycheckqty, 0)) * aa_orderprice), 0) " +
+        "from purc$apbilladjustment where coalesce(aa_thischeckqty, 0) <> 0 and aa_enuu = ? and aa_custuu = ?";
+
+    /**
+     * 客户采购验收单未对账金额查询语句
+     */
+    public static final String SALE_ACCEPT_COUNT_SQL = "select coalesce(sum(case " +
+        " when currency = 'USD' then count * " + UsoftRate.USD_RATE +
+        " when currency = 'HKD' then count * " + UsoftRate.HKD_RATE +
+        " else count end), 0) " +
+        "from (" +
+        "select sum((pai_qty - coalesce(pai_ycheckqty, 0)) * pai_orderprice) as count, pa_currency as currency " +
+        "from purc$accept left join `purc$acceptitem` on pai_paid = pa_id " +
+        "where pai_qty > coalesce(pai_ycheckqty, 0) and pa_enuu = ? and  pa_venduu = ? and pai_orderprice <> 0 " +
+        "group by pa_currency) a";
+
+    /**
+     * 客户采购验退单未对账金额查询语句
+     */
+    public static final String SALE_RETURN_COUNT_SQL = "select coalesce(sum(case " +
+        " when currency = 'USD' then count * " + UsoftRate.USD_RATE +
+        " when currency = 'HKD' then count * " + UsoftRate.HKD_RATE +
+        " else count end), 0) " +
+        "from (" +
+        "select sum(((-(1) * pri_qty ) - coalesce(pri_ycheckqty, 0)) *  pri_orderprice) as count, pr_currency as currency " +
+        "from `purc$return` left join `purc$returnitem` on pr_id = pri_prid " +
+        "where pri_qty > abs(coalesce(pri_ycheckqty, 0)) and pr_venduu = ? and pr_enuu = ? group by pr_currency) a";
+
+    //todo 不良品出入库价格为0,暂不用计算
+
+    /**
+     * 客户委外验收单未对账金额查询语句
+     */
+    public static final String MAKE_ACCEPT_COUNT_SQL = "select coalesce(sum(case " +
+        " when currency = 'USD' then count * " + UsoftRate.USD_RATE +
+        " when currency = 'HKD' then count * " + UsoftRate.HKD_RATE +
+        " else count end), 0) " +
+        "from (" +
+        "select sum((mai_qty - coalesce(mai_ycheckqty, 0)) * mai_orderpice) as count,ma_currency as currency " +
+        " from make$accept " +
+        "join make$acceptitem on ma_id = mai_paid " +
+        "where mai_qty > coalesce(mai_ycheckqty, 0) and ma_venduu = ? and ma_enuu = ? and mai_orderpice > 0 group by ma_currency) a";
+
+    /**
+     * 客户委外验退单未对账金额查询语句
+     */
+    public static final String MAKE_RETURN_COUNT_SQL = "select coalesce(sum(case " +
+        " when currency = 'USD' then count * " + UsoftRate.USD_RATE +
+        " when currency = 'HKD' then count * " + UsoftRate.HKD_RATE +
+        " else count end), 0) " +
+        "from (" +
+        "select sum(((-(1) *  mri_qty ) - coalesce(mri_ycheckqty, 0)) * mri_orderpice) as count,mr_currency as currency " +
+        " from make$return " +
+        "join make$returnitem on mr_id =  mri_paid " +
+        "where mri_qty > abs(coalesce(mri_ycheckqty, 0)) and mr_venduu = ? and mr_enuu = ? and mri_orderpice > 0 group by mr_currency) a";
+}

+ 18 - 9
src/main/java/com/uas/platform/b2b/service/impl/PurchaseApCheckServiceImpl.java

@@ -1,6 +1,7 @@
 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.PurchaseApCheckDao;
 import com.uas.platform.b2b.dao.PurchaseApCheckDoneDao;
 import com.uas.platform.b2b.dao.PurchaseApCheckItemDao;
@@ -15,6 +16,7 @@ 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.model.util.UnCheckedCountSqls;
 import com.uas.platform.b2b.service.OrderRedDotService;
 import com.uas.platform.b2b.service.PurchaseApCheckService;
 import com.uas.platform.b2b.service.VendorService;
@@ -28,7 +30,6 @@ 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;
-import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -67,7 +68,7 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
 	PurchaseApCheckItemDao purchaseApCheckItemDao;
 
 	@Autowired
-	private JdbcTemplate jdbcTemplate;
+	private CommonDao commonDao;
 
 	@Autowired
 	private OrderRedDotService redDotService;
@@ -157,7 +158,7 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
 					}
 					String sql = "update " + sourceTable + " set " + yCheckQtyName + " = " + newYCheckQtyVal + " where "
 							+ idName + " = " + sourceIdVal;
-					jdbcTemplate.execute(sql);
+                    commonDao.getJdbcTemplate().execute(sql);
 				}
 			}
 			check.setCheckStatus("已作废");
@@ -215,7 +216,7 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
 				}
 				String sql = "update " + sourceTable + " set " + yCheckQtyName + " = " + newYCheckQtyVal + " where "
 						+ idName + " = " + sourceIdVal;
-				jdbcTemplate.execute(sql);
+                commonDao.getJdbcTemplate().execute(sql);
 
 			}
 		}
@@ -239,7 +240,7 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
 				if (list != null && list.size() == 3) {
 					String sql = "select count(0) from " + item.getSourceTable() + " where " + list.get(1) + "="
 							+ item.getSourceId();
-					Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
+					Integer count = commonDao.queryForObject(sql, Integer.class);
 					if (count == 0) {
 						apCheck.setStatus((short) Status.DISABLED.value());
 						purchaseApCheckDao.save(apCheck);
@@ -316,7 +317,7 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
 					}
 					String sql = "update " + source.getSourcetable() + " set " + yCheckQtyName + " = "
 							+ source.getNewYCheckQty() + " where " + idName + " = " + source.getSourceid();
-					jdbcTemplate.execute(sql);
+                    commonDao.getJdbcTemplate().execute(sql);
 				} else {
 					throw new IllegalOperatorException("保存失败!");
 				}
@@ -470,13 +471,21 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
     @Override
     public SPage<Vendor> getCustomerInfo(PageParams params, String keyword) {
         SPage<Vendor> vendorSPage = vendorService.getCustomerInfo(params, keyword);
-        vendorSPage.getContent().stream().filter(customer -> customer.getApcheck() == 1)
+        final Long enUU = SystemSession.getUser().getEnterprise().getUu();
+        vendorSPage.getContent().stream().filter(customer -> null != customer.getApcheck() && customer.getApcheck() == 1)
             .forEach(customer -> {
-                PurchaseApCheck apCheck = purchaseApCheckDao.findByCustomerUUAndEnUU(customer.getMyEnUU(), SystemSession.getUser().getEnterprise().getUu());
+                Long customerUU = customer.getMyEnUU();
+                PurchaseApCheck apCheck = purchaseApCheckDao.findByCustomerUUAndEnUU(customerUU, enUU);
                 if (null != apCheck) {
                     customer.setLastCheckDate(apCheck.getRecordDate());
-                    customer.setLastCheckCount(apCheck.getCheckAmount());
                 }
+                Double adjustmentCount = commonDao.queryForObject(UnCheckedCountSqls.ADJUSTMENT_COUNT_SQL, Double.class, enUU, customerUU);
+                Double saleAcceptCount = commonDao.queryForObject(UnCheckedCountSqls.SALE_ACCEPT_COUNT_SQL, Double.class, enUU, customerUU);
+                Double saleReturnCount = commonDao.queryForObject(UnCheckedCountSqls.SALE_RETURN_COUNT_SQL, Double.class, enUU, customerUU);
+                Double makeAcceptCount = commonDao.queryForObject(UnCheckedCountSqls.MAKE_ACCEPT_COUNT_SQL, Double.class, enUU, customerUU);
+                Double makeReturnCount = commonDao.queryForObject(UnCheckedCountSqls.MAKE_RETURN_COUNT_SQL, Double.class, enUU, customerUU);
+                Double totalCount = adjustmentCount + saleAcceptCount + saleReturnCount + makeAcceptCount + makeReturnCount;
+                customer.setUncheckedCount(totalCount);
             });
         return vendorSPage;
     }