瀏覽代碼

Merge branch 'feature-201913-suntg'

suntg 6 年之前
父節點
當前提交
70558d7536

+ 20 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseProofingItemDao.java

@@ -7,6 +7,7 @@ import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.Collection;
 import java.util.List;
 
 @Repository
@@ -73,4 +74,23 @@ public interface PurchaseProofingItemDao extends JpaSpecificationExecutor<Purcha
      */
     @Query("select count(1) from PurchaseProofingItem p where p.id in :ids and p.status = :status")
     Integer findReadCount(@Param("ids") List<Long> ids, @Param("status") Short status);
+
+	/**
+	 * 根据卖方UU号和单据状态统计数量
+	 * @param vendUU
+	 * @param status
+	 * @return
+	 */
+	@Query("select count(1) from PurchaseProofingItem p where p.vendUU=:vendUU and p.status = :status")
+	int countByVendUUAndStatus(@Param("vendUU") Long vendUU, @Param("status") short status);
+
+	/**
+	 * 根据卖方UU号和买方UU号、单据状态获取统计数量
+	 * @param vendUU
+	 * @param enUUs
+	 * @param status
+	 * @return
+	 */
+	@Query("select count(1) from PurchaseProofingItem p where p.vendUU=:vendUU and p.proofing.enUU in :enUUs and p.status = :status")
+	int countByVendUUAndEnUUsAndStatus(@Param("vendUU") Long vendUU, @Param("enUUs") Collection enUUs, @Param("status") short status);
 }

+ 6 - 0
src/main/java/com/uas/platform/b2b/erp/service/impl/ProdIoPayServiceImpl.java

@@ -128,6 +128,9 @@ public class ProdIoPayServiceImpl implements ProdIoPayService {
     private List<String> updateMakeReturn(List<ProdIoPay> payList, Long enUU) {
         List<String> sqlList = new ArrayList<>();
         payList.forEach(pay -> {
+            // 验退单,保证金额是负数
+            pay.setAmount(0 - Math.abs(pay.getAmount()));
+
             String sql = "update make$returnitem" +
                 " right join make$return on mri_paid = mr_id" +
                 " set mri_payment = " + pay.getAmount() + "," +
@@ -244,6 +247,9 @@ public class ProdIoPayServiceImpl implements ProdIoPayService {
     private List<String> updateSaleReturn(List<ProdIoPay> payList, Long enUU) {
         List<String> sqlList = new ArrayList<>();
         payList.forEach(pay -> {
+            // 验退单,保证金额是负数
+            pay.setAmount(0 - Math.abs(pay.getAmount()));
+
             String sql = "update purc$returnitem" +
                 " right join purc$return on pri_prid = pr_id" +
                 " set pri_payment = " + pay.getAmount() + "," +

+ 2 - 0
src/main/java/com/uas/platform/b2b/mall2/controller/SaleApcCheckController.java

@@ -10,6 +10,7 @@ import org.springframework.ui.ModelMap;
 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.ResponseBody;
 
 import java.io.UnsupportedEncodingException;
 
@@ -31,6 +32,7 @@ public class SaleApcCheckController {
      * @return ModelMap 封装成功信息以及异常信息
      */
     @RequestMapping(value = "/operation/save", method = RequestMethod.POST)
+    @ResponseBody
     public ModelMap saveApCheck(@RequestBody String json) throws UnsupportedEncodingException {
         json = URLDecoderUtils.decode(json, "UTF-8");
         PurchaseApCheck apCheck = FlexJsonUtils.fromJson(json, PurchaseApCheck.class);

+ 124 - 0
src/main/java/com/uas/platform/b2b/mall2/controller/SaleSampleController.java

@@ -0,0 +1,124 @@
+package com.uas.platform.b2b.mall2.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.search.SearchService;
+import com.uas.platform.b2b.service.AttachService;
+import com.uas.platform.b2b.service.OrderRedDotService;
+import com.uas.platform.b2b.service.PurchaseProofingService;
+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;
+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.model.Status;
+import com.uas.platform.core.persistence.criteria.PredicateUtils;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import com.uas.platform.core.web.bind.RequestState;
+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;
+import com.uas.search.b2b.util.SearchConstants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort.Direction;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * 卖家获取对应的客户打样申请单
+ * 
+ * @author suntg
+ * 
+ */
+@SuppressWarnings("deprecation")
+@Controller("mall2.SaleSampleController")
+@RequestMapping("/mall2/sale/sample")
+public class SaleSampleController {
+
+	@Autowired
+	private PurchaseProofingService purchaseProofingService;
+
+	@Autowired
+	private UserService userService;
+
+	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+	/**
+	 * 作为卖家,在平台上对客户打样申请进行送样
+	 * 
+	 * @param id
+	 * @return
+	 */
+	@RequestMapping(value = "/{id}/send", method = RequestMethod.POST)
+	@ResponseBody
+	public ResponseEntity<String> sendSample(@RequestBody String json, @PathVariable("id") Long id) {
+		PurchaseProofingSend proofingSend = FlexJsonUtils.fromJson(json, PurchaseProofingSend.class);
+		PurchaseProofingItem proofingItem = new PurchaseProofingItem();
+		proofingItem.setId(id);
+		proofingSend.setProofingItem(proofingItem);
+		proofingSend.setItemId(id);
+
+		// 如果有附件,初始化一下附件的数据
+		if (!CollectionUtils.isEmpty(proofingSend.getAttachs())) {
+			proofingSend.getAttachs().forEach(attach -> {
+				attach.setDate(new Date());
+				attach.setDescription("送样单附件");
+			});
+		}
+
+		proofingSend = purchaseProofingService.send(proofingSend);
+		logger.log("客户打样申请", "对客户打样申请送样", "送样单号:" + proofingSend.getCode());
+		return new ResponseEntity<String>(HttpStatus.OK);
+	}
+
+	/**
+	 * 获取计数统计
+	 * @return
+	 */
+	@RequestMapping(value = "/counts", method = RequestMethod.GET)
+	@ResponseBody
+	public ModelMap getCounts() {
+		ModelMap modelMap = new ModelMap();
+		Long vendUU = SystemSession.getUser().getEnterprise().getUu();
+		SearchFilter distribute = userService.distribute();
+		Collection enUUs = null;
+		if (distribute != null && distribute.getDistribute() != null) {
+			enUUs = distribute.getDistribute();
+		}
+		modelMap.put("todo", purchaseProofingService.countTodoProofing(vendUU, enUUs));
+		modelMap.put("done", purchaseProofingService.countDoneProofing(vendUU, enUUs));
+		modelMap.put("invalid", purchaseProofingService.countInvalidProofing(vendUU, enUUs));
+		return modelMap;
+	}
+
+	/**
+	 * 作为卖家,获取送样申请明细的送样单
+	 *
+	 * @param id
+	 * @return
+	 */
+	@RequestMapping(value = "/{id}/send", method = RequestMethod.GET)
+	@ResponseBody
+	public ModelMap getProofingSends(@PathVariable("id") Long id) {
+		List<PurchaseProofingSend> sends = purchaseProofingService.findSendsByItemId(id);
+		logger.log("客户打样申请", "获取打样申请的送样信息,送样单明细id:" + id);
+		ModelMap modelMap = new ModelMap();
+		modelMap.put("data", sends);
+		return modelMap;
+	}
+
+
+}

+ 7 - 7
src/main/java/com/uas/platform/b2b/model/util/ProdIoPayCountSqls.java

@@ -12,7 +12,7 @@ public class ProdIoPayCountSqls {
      * 货款调账付款记录
      */
     public static final String ADJUSTMENT_COUNT_SQL = "select sum(coalesce(aa_payment, 0)) as count, aa_currency as currency from purc$apbilladjustment" +
-        " where aa_enuu = ? and aa_custuu = ? and aa_date >= ? and aa_date < ? and coalesce(aa_payment, 0) > 0" +
+        " where aa_enuu = ? and aa_custuu = ? and aa_date >= ? and aa_date < ? and aa_payment is not null" +
         " group by aa_currency, aa_payment";
 
     /**
@@ -20,7 +20,7 @@ public class ProdIoPayCountSqls {
      */
     public static final String SALE_ACCEPT_COUNT_SQL = "select sum(coalesce(pai_payment, 0)) as count, pa_currency as currency" +
         " from purc$accept left join `purc$acceptitem` on pai_paid = pa_id " +
-        " where pa_venduu = ? and pa_enuu = ? and pa_date >= ? and pa_date < ? and coalesce(pai_payment, 0) > 0" +
+        " where pa_venduu = ? and pa_enuu = ? and pa_date >= ? and pa_date < ? and pai_payment is not null" +
         " group by pa_currency, pai_payment";
 
     /**
@@ -28,7 +28,7 @@ public class ProdIoPayCountSqls {
      */
     public static final String SALE_RETURN_COUNT_SQL = "select sum(coalesce(pri_payment, 0)) as count, pr_currency as currency " +
         " from `purc$return` left join `purc$returnitem` on pr_id = pri_prid " +
-        " where pr_venduu = ? and pr_enuu = ? and pr_date >= ? and pr_date < ? and coalesce(pri_payment, 0) > 0 " +
+        " where pr_venduu = ? and pr_enuu = ? and pr_date >= ? and pr_date < ? and pri_payment is not null " +
         " group by pr_currency,pri_payment";
 
     /**
@@ -37,7 +37,7 @@ public class ProdIoPayCountSqls {
     public static final String MAKE_ACCEPT_COUNT_SQL = "select sum(coalesce(mai_payment, 0)) as count, ma_currency as currency" +
         " from make$accept" +
         " join make$acceptitem on ma_id = mai_paid" +
-        " where ma_venduu = ? and ma_enuu = ? and mai_orderpice > 0 and ma_date >= ? and ma_date < ? and coalesce(mai_payment, 0) > 0" +
+        " where ma_venduu = ? and ma_enuu = ? and mai_orderpice > 0 and ma_date >= ? and ma_date < ? and mai_payment is not null" +
         " group by ma_currency,mai_payment";
 
     /**
@@ -46,7 +46,7 @@ public class ProdIoPayCountSqls {
     public static final String MAKE_RETURN_COUNT_SQL = "select sum(coalesce(mri_payment, 0)) as count, mr_currency as currency" +
         " from make$return" +
         " join make$returnitem on mr_id =  mri_paid" +
-        " where mr_venduu = ? and mr_enuu = ? and mri_orderpice > 0 and mr_date >= ? and mr_date < ? and coalesce(mri_payment, 0) > 0" +
+        " where mr_venduu = ? and mr_enuu = ? and mri_orderpice > 0 and mr_date >= ? and mr_date < ? and mri_payment is not null" +
         " group by mr_currency,mri_payment";
 
     /**
@@ -55,7 +55,7 @@ public class ProdIoPayCountSqls {
     public static final String SALE_BAD_IN_COUNT_SQL = "select sum(pbi_payment) as count, pb_currency as currency" +
         " from purc$badin" +
         " join purc$badinitem on pb_id = pbi_pbid" +
-        " where pb_venduu = ? and pb_enuu = ? and pb_date >= ? and pb_date < ? and coalesce(pbi_payment, 0) > 0" +
+        " where pb_venduu = ? and pb_enuu = ? and pb_date >= ? and pb_date < ? and pbi_payment is not null" +
         " group by pb_currency, pbi_payment";
 
     /**
@@ -64,6 +64,6 @@ public class ProdIoPayCountSqls {
     public static final String SALE_BAD_OUT_COUNT_SQL = "select sum(poi_payment) as count, po_currency as currency" +
         " from purc$badout" +
         " join purc$badoutitem on po_id = poi_poid" +
-        " where po_venduu = ? and po_enuu = ? and po_date >=? and po_date < ?" +
+        " where po_venduu = ? and po_enuu = ? and po_date >=? and po_date < ? and poi_payment is not null" +
         " group by poi_payment,po_currency";
 }

+ 24 - 0
src/main/java/com/uas/platform/b2b/service/PurchaseProofingService.java

@@ -11,6 +11,7 @@ import com.uas.platform.core.model.PageInfo;
 import com.uas.search.b2b.model.SPage;
 import org.springframework.data.domain.Page;
 
+import java.util.Collection;
 import java.util.List;
 
 /**
@@ -222,4 +223,27 @@ public interface PurchaseProofingService {
 	 */
     void invalidateProductSample(String[] ids);
 
+	/**
+	 * 获取待送样单据数量
+	 * @param vendUU
+	 * @param enUUs
+	 * @return
+	 */
+    int countTodoProofing(Long vendUU, Collection enUUs);
+
+	/**
+	 * 获取已送样单据数量
+	 * @param vendUU
+	 * @param enUUs
+	 * @return
+	 */
+	int countDoneProofing(Long vendUU, Collection enUUs);
+
+	/**
+	 * 获取已作废单据数量
+	 * @param vendUU
+	 * @param enUUs
+	 * @return
+	 */
+	int countInvalidProofing(Long vendUU, Collection enUUs);
 }

+ 51 - 5
src/main/java/com/uas/platform/b2b/service/impl/PurchaseProofingServiceImpl.java

@@ -48,11 +48,7 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * 打样申请单
@@ -565,4 +561,54 @@ public class PurchaseProofingServiceImpl implements PurchaseProofingService {
 		purchaseProofingItemDao.save(saveItems);
     }
 
+	/**
+	 * 获取待送样单据数量
+	 *
+	 * @param vendUU
+	 * @param enUUs
+	 * @return
+	 */
+	@Override
+	public int countTodoProofing(Long vendUU, Collection enUUs) {
+		return getCountByVenduuAndEnuuAndStatus(vendUU, enUUs, (short) Status.UNSEND.value());
+	}
+
+	/**
+	 * 获取已送样单据数量
+	 *
+	 * @param vendUU
+	 * @param enUUs
+	 * @return
+	 */
+	@Override
+	public int countDoneProofing(Long vendUU, Collection enUUs) {
+		return getCountByVenduuAndEnuuAndStatus(vendUU, enUUs, (short) Status.SEND.value());
+	}
+
+	/**
+	 * 获取已作废单据数量
+	 *
+	 * @param vendUU
+	 * @param enUUs
+	 * @return
+	 */
+	@Override
+	public int countInvalidProofing(Long vendUU, Collection enUUs) {
+		return getCountByVenduuAndEnuuAndStatus(vendUU, enUUs, (short) Status.CANCELLED.value());
+	}
+
+	/**
+	 * 根据供应商UU号和买方UU号、状态来获取统计数量
+	 * @param vendUU
+	 * @param enUUs
+	 * @param status
+	 * @return
+	 */
+	private int getCountByVenduuAndEnuuAndStatus(Long vendUU, Collection enUUs, short status) {
+		if (CollectionUtils.isEmpty(enUUs)) {
+			return purchaseProofingItemDao.countByVendUUAndStatus(vendUU, status);
+		}
+		return purchaseProofingItemDao.countByVendUUAndEnUUsAndStatus(vendUU, enUUs, status);
+	}
+
 }