Эх сурвалжийг харах

Merge branch 'feature-201911-suntg' into dev

suntg 6 жил өмнө
parent
commit
cf2ed589c5
21 өөрчлөгдсөн 1163 нэмэгдсэн , 187 устгасан
  1. 10 0
      src/main/java/com/uas/platform/b2b/dao/PurchaseOrderAllDao.java
  2. 20 0
      src/main/java/com/uas/platform/b2b/dao/PurchaseOrderReceivedDao.java
  3. 28 0
      src/main/java/com/uas/platform/b2b/dao/PurchaseOrderWaitingDao.java
  4. 1 0
      src/main/java/com/uas/platform/b2b/listener/GlobalExceptionHandler.java
  5. 225 0
      src/main/java/com/uas/platform/b2b/mall2/controller/PurchaseOrderController.java
  6. 40 0
      src/main/java/com/uas/platform/b2b/mall2/controller/SaleApcCheckController.java
  7. 57 0
      src/main/java/com/uas/platform/b2b/mall2/controller/SaleNoticeController.java
  8. 379 0
      src/main/java/com/uas/platform/b2b/mall2/controller/SaleOrderController.java
  9. 0 139
      src/main/java/com/uas/platform/b2b/manage/model/AccountInfo.java
  10. 3 3
      src/main/java/com/uas/platform/b2b/model/PurchaseOrderAll.java
  11. 15 14
      src/main/java/com/uas/platform/b2b/model/UserBaseInfo.java
  12. 8 0
      src/main/java/com/uas/platform/b2b/service/ErpProdIODetailService.java
  13. 7 0
      src/main/java/com/uas/platform/b2b/service/PurchaseApCheckService.java
  14. 14 0
      src/main/java/com/uas/platform/b2b/service/PurchaseNoticeService.java
  15. 38 0
      src/main/java/com/uas/platform/b2b/service/PurchaseOrderService.java
  16. 3 2
      src/main/java/com/uas/platform/b2b/service/impl/BaseInfoServiceImpl.java
  17. 184 7
      src/main/java/com/uas/platform/b2b/service/impl/ErpProdIODetailServiceImpl.java
  18. 71 14
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseApCheckServiceImpl.java
  19. 22 0
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseNoticeServiceImpl.java
  20. 36 6
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java
  21. 2 2
      src/main/webapp/resources/tpl/index/sale/returns.html

+ 10 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseOrderAllDao.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
@@ -68,4 +69,13 @@ public interface PurchaseOrderAllDao extends JpaSpecificationExecutor<PurchaseOr
 	public int getTodoCountByEnUUAndUserUUAndStatus(@Param("enUU") Long enUU, @Param("userUU") Long userUU,
 			@Param("status") Short status);
 
+	/**
+	 * 根据供应商UU号和分配客户的UU号获取订单个数
+	 * @param vendUU
+	 * @param enUUs
+	 * @return
+	 */
+	@Query("select count(o) from PurchaseOrderAll o where o.vendUU = :vendUU and o.enUU in :enUUs")
+	int countByVendUUAndEnUUs(@Param("vendUU") Long vendUU, @Param("enUUs") Collection<Long> enUUs);
+
 }

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

@@ -3,8 +3,12 @@ package com.uas.platform.b2b.dao;
 import com.uas.platform.b2b.model.PurchaseOrderReceived;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.Collection;
+
 /**
   * @author wangmh
   * @version 创建时间:2017年6月23日
@@ -13,4 +17,20 @@ import org.springframework.stereotype.Repository;
 @Repository
 public interface PurchaseOrderReceivedDao extends JpaSpecificationExecutor<PurchaseOrderReceived> , JpaRepository<PurchaseOrderReceived, Long>{
 
+    /**
+     * 根据供应商UU号和分配客户的UU号获取订单个数
+     * @param vendUU
+     * @param enUUs
+     * @return
+     */
+    @Query("select count(o) from PurchaseOrderReceived o where o.vendUU = :vendUU and o.enUU in :enUUs")
+    int countByVendUUAndEnUUs(@Param("vendUU") Long vendUU, @Param("enUUs") Collection<Long> enUUs);
+
+    /**
+     * 根据供应商UU号获取订单个数
+     * @param vendUU
+     * @return
+     */
+    @Query("select count(o) from PurchaseOrderReceived o where o.vendUU = :vendUU")
+    int countByVendUU(@Param("vendUU") Long vendUU);
 }

+ 28 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseOrderWaitingDao.java

@@ -2,11 +2,15 @@ package com.uas.platform.b2b.dao;
 
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.jpa.repository.query.Procedure;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 import com.uas.platform.b2b.model.PurchaseOrderWaiting;
 
+import java.util.Collection;
+
 /** 
   * @author yujia 
   * @version 创建时间:2015年12月29日 下午1:48:26 
@@ -30,4 +34,28 @@ public interface PurchaseOrderWaitingDao extends JpaSpecificationExecutor<Purcha
 	 */
 	@Procedure(procedureName = "purc$orders_wait_status_update")
 	public void updateStatusForPurc(Long enuu);
+
+	/**
+	 * 根据客户企业UU号获取数量
+	 * @param enUU
+	 * @return
+	 */
+    int countByEnUU(Long enUU);
+
+	/**
+	 * 根据供应商UU号和分配客户的UU号获取订单个数
+	 * @param vendUU
+	 * @param enUUs
+	 * @return
+	 */
+	@Query("select count(o) from PurchaseOrderWaiting o where o.vendUU = :vendUU and o.enUU in :enUUs")
+	int countByVendUUAndEnUUs(@Param("vendUU") Long vendUU, @Param("enUUs") Collection<Long> enUUs);
+
+	/**
+	 * 根据供应商UU号获取订单个数
+	 * @param vendUU
+	 * @return
+	 */
+	@Query("select count(o) from PurchaseOrderWaiting o where o.vendUU = :vendUU")
+	int countByVendUU(@Param("vendUU") Long vendUU);
 }

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

@@ -78,6 +78,7 @@ public class GlobalExceptionHandler {
     @ResponseBody
     @ExceptionHandler(value = Exception.class)
     public ResponseEntity<String> defaultErrorHandler(HttpServletRequest request, Exception e, HttpServletResponse response) throws UnsupportedEncodingException {
+        e.printStackTrace();
         String jsonStr = JSON.toJSONString(e.getStackTrace());
         List<ExceptionMsg> msgList = FlexJsonUtils.fromJsonArray(jsonStr, ExceptionMsg.class);
         List<ExceptionMsg> msgs = new ArrayList<>();

+ 225 - 0
src/main/java/com/uas/platform/b2b/mall2/controller/PurchaseOrderController.java

@@ -0,0 +1,225 @@
+package com.uas.platform.b2b.mall2.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2b.dao.PurchaseOrderWaitingDao;
+import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.search.SearchService;
+import com.uas.platform.b2b.service.PurcOrderService;
+import com.uas.platform.b2b.service.PurchaseOrderService;
+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.exception.IllegalOperatorException;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.model.Constant;
+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.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.util.SearchConstants;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
+
+/**
+ * 提供给新商城的采购订单接口
+ * 
+ * @author suntg
+ * @date 2019-3-26 17:08:03
+ */
+@Controller("mall2.PurchaseOrderController")
+@RequestMapping("/mall2/purchase/orders")
+public class PurchaseOrderController {
+	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+	@Autowired
+	private SearchService searchService;
+
+	@Autowired
+	private PurchaseOrderService purchaseOrderService;
+
+	/**
+	 * 作为买家,收到的采购订单(含明细)
+	 *
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseOrderAll> getAllPurcOrderItems(PageParams params, String searchFilter) {
+		logger.log("采购单", "查看收到的采购订单列表(包括采购明细)(全部)");
+		JSONObject jsonObject = JSONObject.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+
+		if (pageParams.getPage() > 1) {
+			pageParams.setSize(pageParams.getPage() * pageParams.getSize());
+			pageParams.setPage(1);
+		}
+
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("pu_id", false, Sort.Type.INT, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		pageParams.getFilters().put("pu_enuu", SystemSession.getUser().getEnterprise().getUu());
+		Map<String, Object> map = new HashMap<String, Object>();
+		map.put("pu_status", (short) Status.UNAUDIT.value());
+		pageParams.setNotEqualFilters(map);
+		return searchService.searchPurchaseOrderIds(keyword, pageParams);
+	}
+
+	/**
+	 * 作为买家,查看发出的采购单(已结案)
+	 *
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.END, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseOrderEnd> getEndPurcOrderItems(PageParams params, String searchFilter) {
+		logger.log("采购单", "查看收到的采购订单列表(包括采购明细)(已结案)");
+		JSONObject jsonObject = JSONObject.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+
+		if (pageParams.getPage() > 1) {
+			pageParams.setSize(pageParams.getPage() * pageParams.getSize());
+			pageParams.setPage(1);
+		}
+
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("pu_id", false, Sort.Type.INT, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		pageParams.getFilters().put("pu_enuu", SystemSession.getUser().getEnterprise().getUu());
+		pageParams.getFilters().put("pu_end", Constant.YES);
+		return searchService.searchaPurchaseEndOrderIds(keyword, pageParams);
+	}
+
+	/**
+	 * @param params
+	 * @param searchFilter
+	 *            获取待发货的订单
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.WAITING, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseOrderWaiting> getWaitingPurcOrderItems(PageParams params, String searchFilter) {
+		logger.log("采购单", "查看收到的采购订单列表(包括采购明细)(待交货)");
+		JSONObject jsonObject = JSONObject.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+
+		if (pageParams.getPage() > 1) {
+			pageParams.setSize(pageParams.getPage() * pageParams.getSize());
+			pageParams.setPage(1);
+		}
+
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("pu_id", false, Sort.Type.INT, new Long(1)));
+		List<Object> list = new ArrayList<>();
+		list.add(Constant.YES);
+		// 建索引时,将不处于已结案状态,但是货物全部交接完毕的单,end值设为了2
+		list.add((short) 2);
+		ModelMap map = new ModelMap();
+		map.put("pu_end", new MultiValue(list, true));
+		map.put("pu_status", (short) Status.UNAUDIT.value());
+		pageParams.setNotEqualFilters(map);
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		pageParams.getFilters().put("pu_enuu", SystemSession.getUser().getEnterprise().getUu());
+		return searchService.searchPurchaseWaitingOrderIds(keyword, pageParams);
+	}
+
+	/**
+	 * 作为买家,收到的采购订单(含明细)
+	 *
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/info/nosearch", method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseOrderAll> getAllPurcOrders(PageParams params, String searchFilter) {
+		logger.log("采购单", "查看采购订单列表(包括采购明细)(全部)");
+		PageInfo pageInfo = new PageInfo(params);
+
+		if (pageInfo.getPageNumber() > 1) {
+			pageInfo.setPageSize(pageInfo.getPageSize() * pageInfo.getPageNumber());
+			pageInfo.setPageNumber(1);
+		}
+
+		pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
+		SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+		return purchaseOrderService.findOrdersByPageInfo(pageInfo, filter);
+	}
+
+	/**
+	 * 作为买家,查看发出的采购单(已结案)
+	 *
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/info/nosearch", params = RequestState.END, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseOrderEnd> getEndPurcOrders(PageParams params, String searchFilter) {
+		logger.log("采购单", "查看采购订单列表(包括采购明细)(已结案)");
+		PageInfo pageInfo = new PageInfo(params);
+
+		if (pageInfo.getPageNumber() > 1) {
+			pageInfo.setPageSize(pageInfo.getPageSize() * pageInfo.getPageNumber());
+			pageInfo.setPageNumber(1);
+		}
+
+		pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
+		pageInfo.filter("end", Constant.YES);
+		SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+		return purchaseOrderService.findEndOrders(pageInfo, filter);
+	}
+
+	/**
+	 * @param params
+	 * @param searchFilter
+	 *            获取待发货的订单
+	 */
+	@RequestMapping(value = "/info/nosearch", params = RequestState.WAITING, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseOrderWaiting> getWaitingPurcOrders(PageParams params, String searchFilter) {
+		logger.log("采购单", "查看采购订单列表(包括采购明细)(待交货)");
+		PageInfo pageInfo = new PageInfo(params);
+
+		if (pageInfo.getPageNumber() > 1) {
+			pageInfo.setPageSize(pageInfo.getPageSize() * pageInfo.getPageNumber());
+			pageInfo.setPageNumber(1);
+		}
+
+		pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
+		SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+		return purchaseOrderService.findWaitingOrders(pageInfo, filter);
+	}
+
+	/**
+	 * 获取单据数据统计
+	 * @return
+	 */
+	@RequestMapping(value = "/counts", method = RequestMethod.GET)
+	@ResponseBody
+	public ModelMap getCounts() {
+		ModelMap modelMap = new ModelMap();
+		Long enUU = SystemSession.getUser().getEnterprise().getUu();
+		modelMap.put("all", purchaseOrderService.countPurchaseAllOrders(enUU));
+		modelMap.put("waiting", purchaseOrderService.countPurchaseWaitingOrders(enUU));
+		return modelMap;
+	}
+}

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

@@ -0,0 +1,40 @@
+package com.uas.platform.b2b.mall2.controller;
+
+import com.uas.platform.b2b.core.util.URLDecoderUtils;
+import com.uas.platform.b2b.model.PurchaseApCheck;
+import com.uas.platform.b2b.service.PurchaseApCheckService;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+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 java.io.UnsupportedEncodingException;
+
+/**
+ * @author suntg
+ * @date ${date}
+ */
+@Controller("mall2.SaleApCheckController")
+@RequestMapping("/mall2/sale/apCheck")
+public class SaleApcCheckController {
+
+    @Autowired
+    private PurchaseApCheckService purchaseApCheckService;
+
+    /**
+     * 保存生成的应收对账单主记录
+     *
+     * @param json 前台对账json
+     * @return ModelMap 封装成功信息以及异常信息
+     */
+    @RequestMapping(value = "/operation/save", method = RequestMethod.POST)
+    public ModelMap saveApCheck(@RequestBody String json) throws UnsupportedEncodingException {
+        json = URLDecoderUtils.decode(json, "UTF-8");
+        PurchaseApCheck apCheck = FlexJsonUtils.fromJson(json, PurchaseApCheck.class);
+        return purchaseApCheckService.checkCountWithSimpleDetail(apCheck);
+    }
+
+}

+ 57 - 0
src/main/java/com/uas/platform/b2b/mall2/controller/SaleNoticeController.java

@@ -0,0 +1,57 @@
+package com.uas.platform.b2b.mall2.controller;
+
+import com.uas.platform.b2b.model.SaleSendItem;
+import com.uas.platform.b2b.service.PurchaseNoticeService;
+import com.uas.platform.b2b.support.SystemSession;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+
+/**
+ * 提供给新商城的送货提醒接口
+ * @author suntg
+ * @date 2019-3-26 16:47:33
+ */
+@Controller("mall2.SaleNoticeController")
+@RequestMapping("/mall2/sale/notice")
+public class SaleNoticeController {
+
+    @Autowired
+    private PurchaseNoticeService purchaseNoticeService;
+
+    /**
+     * 获取单据数据统计
+     * @return
+     */
+    @RequestMapping(value = "/counts", method = RequestMethod.GET)
+    @ResponseBody
+    public ModelMap getCounts() {
+        ModelMap modelMap = new ModelMap();
+        Long vendUU = SystemSession.getUser().getEnterprise().getUu();
+        modelMap.put("all", purchaseNoticeService.countAll(vendUU));
+        modelMap.put("todo", purchaseNoticeService.countTodo(vendUU));
+        return modelMap;
+    }
+
+    /**
+     * 根据送货提醒id,获取送货单明细记录
+     *
+     * @param noticeId
+     * @return
+     */
+    @RequestMapping(value = "/{noticeId}/sendItems", method = RequestMethod.GET)
+    @ResponseBody
+    public ModelMap getSendItemsNoticeById(@PathVariable("noticeId") Long noticeId) {
+        ModelMap modelMap = new ModelMap();
+        List<SaleSendItem> sendItems = purchaseNoticeService.findSendById(noticeId);
+        modelMap.put("sendItems", sendItems);
+        return modelMap;
+    }
+}

+ 379 - 0
src/main/java/com/uas/platform/b2b/mall2/controller/SaleOrderController.java

@@ -0,0 +1,379 @@
+package com.uas.platform.b2b.mall2.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2b.dao.PurchaseOrderAllDao;
+import com.uas.platform.b2b.dao.PurchaseOrderWaitingDao;
+import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.search.SearchService;
+import com.uas.platform.b2b.service.OrderRedDotService;
+import com.uas.platform.b2b.service.PurchaseOrderService;
+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.TokenService;
+import com.uas.platform.b2b.support.UsageBufferedLogger;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.model.Constant;
+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.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.Page;
+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
+ * @date 2019-3-26 17:08:29
+ */
+@SuppressWarnings("deprecation")
+@Controller("mall2.SaleOrderController")
+@RequestMapping("/mall2/sale/orders")
+public class SaleOrderController {
+
+	@Autowired
+	private PurchaseOrderService purchaseOrderService;
+
+	@Autowired
+	private SearchService searchService;
+
+	@Autowired
+	private UserService userService;
+
+	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+	/**
+	 * 作为卖家,收到的采购订单(含明细) - 搜索
+	 * 
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseOrderAll> getPurchaseOrderItems(PageParams params, String searchFilter) {
+		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(全部)");
+		JSONObject jsonObject = JSONObject.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+		// 当前登录企业作为供应商
+		pageParams.getFilters().put("pu_venduu", SystemSession.getUser().getEnterprise().getUu());
+		SearchFilter filter = userService.distribute();
+		if (filter != null && filter.getDistribute() == null) {
+			return null;
+		}
+		if (filter != null && !CollectionUtils.isEmpty(filter.getDistribute())) {
+			List<Object> list = new ArrayList<>();
+			list.addAll(filter.getDistribute());
+			pageParams.getFilters().put("pu_enuu", new MultiValue(list, true));
+		}
+
+		if (pageParams.getPage() > 1) {
+			pageParams.setSize(pageParams.getPage() * pageParams.getSize());
+			pageParams.setPage(1);
+		}
+
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("pu_id", false, Type.INT, 1L));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		Map<String, Object> map = new HashMap<String, Object>(1);
+		map.put("pu_status", (short) Status.UNAUDIT.value());
+		pageParams.setNotEqualFilters(map);
+		return searchService.searchPurchaseOrderIds(keyword, pageParams);
+	}
+
+	/**
+	 * 作为卖家,收到的采购订单(含明细)(已结案) - 搜索
+	 *
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.END, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseOrderEnd> getEndPurchaseOrderItems(PageParams params, String searchFilter) {
+		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(已结案)");
+		JSONObject jsonObject = JSONObject.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+		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("pu_enuu", new MultiValue(list, true));
+		}
+
+		if (pageParams.getPage() > 1) {
+			pageParams.setSize(pageParams.getPage() * pageParams.getSize());
+			pageParams.setPage(1);
+		}
+
+		// 当前登录企业作为供应商
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("pu_id", false, Type.INT, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		pageParams.getFilters().put("pu_venduu", SystemSession.getUser().getEnterprise().getUu());
+		pageParams.getFilters().put("pu_end", Constant.YES);
+		return searchService.searchaPurchaseEndOrderIds(keyword, pageParams);
+	}
+
+	/**
+	 * @param params
+	 * @param searchFilter
+	 * @author wangmh 获取已收货的订单 - 搜索
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.RECEIVED, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseOrderReceived> getReceivedPurchaseOrderItems(PageParams params, String searchFilter) {
+		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(已收货)");
+		JSONObject jsonObject = JSONObject.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+		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("pu_enuu", new MultiValue(list, true));
+		}
+
+		if (pageParams.getPage() > 1) {
+			pageParams.setSize(pageParams.getPage() * pageParams.getSize());
+			pageParams.setPage(1);
+		}
+
+		// 当前登录企业作为供应商
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("pu_id", false, Type.INT, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		pageParams.getFilters().put("pu_venduu", SystemSession.getUser().getEnterprise().getUu());
+		pageParams.getFilters().put("pu_end", Constant.NO);
+		return searchService.searchPurchaseReceivedOrderIds(keyword, pageParams);
+	}
+
+	/**
+	 * @param params
+	 * @param searchFilter
+	 * @author yujia 获取待发货的订单 - 搜索
+	 */
+	@RequestMapping(value = "/info/search", params = RequestState.WAITING, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseOrderWaiting> getWaitingPurchaseOrderItems(PageParams params, String searchFilter) {
+		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(待交货)");
+		JSONObject jsonObject = JSONObject.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+		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("pu_enuu", new MultiValue(list, true));
+		}
+
+		if (pageParams.getPage() > 1) {
+			pageParams.setSize(pageParams.getPage() * pageParams.getSize());
+			pageParams.setPage(1);
+		}
+
+		// 当前登录企业作为供应商
+		List<Sort> sortList = new ArrayList<>();
+		sortList.add(new Sort("pu_id", false, Type.INT, new Long(1)));
+		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+		pageParams.getFilters().put("pu_venduu", SystemSession.getUser().getEnterprise().getUu());
+		List<Object> list = new ArrayList<>();
+		list.add(Constant.YES);
+        // 建索引时,将不处于已结案状态,但是货物全部交接完毕的单,end值设为了2
+		list.add((short) 2);
+		ModelMap map = new ModelMap();
+		map.put("pu_end", new MultiValue(list, true));
+		map.put("pu_status", (short) Status.UNAUDIT.value());
+		pageParams.setNotEqualFilters(map);
+		return searchService.searchPurchaseWaitingOrderIds(keyword, pageParams);
+	}
+
+	/**
+	 * 作为卖家,收到的采购订单(含明细)
+	 *
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/info/nosearch", method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseOrderAll> getSaleOrders(PageParams params, String searchFilter) {
+		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(全部)");
+		JSONObject jsonObject = JSONObject.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+		if (!StringUtils.isEmpty(keyword)) {
+			return getPurchaseOrderItems(params, searchFilter);
+		}
+		PageInfo pageInfo = new PageInfo(params);
+
+		if (pageInfo.getPageNumber() > 1) {
+			pageInfo.setPageSize(pageInfo.getPageSize() * pageInfo.getPageNumber());
+			pageInfo.setPageNumber(1);
+		}
+
+		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+		SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+		SearchFilter distribute = userService.distribute();
+		if (distribute != null && distribute.getDistribute() == null) {
+			return null;
+		}
+		if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+			filter.setDistribute(distribute.getDistribute());
+		}
+		return purchaseOrderService.findOrdersByPageInfo(pageInfo, filter);
+	}
+
+	/**
+	 * 作为卖家,收到的采购订单(含明细)(已结案)
+	 *
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/info/nosearch", params = RequestState.END, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseOrderEnd> getEndSaleOrders(PageParams params, String searchFilter) {
+		logger.log("客户采购单", "查看收到的客户采购单列表(已结案)");
+		JSONObject jsonObject = JSONObject.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+		if (!StringUtils.isEmpty(keyword)) {
+			return getEndPurchaseOrderItems(params, searchFilter);
+		}
+		PageInfo pageInfo = new PageInfo(params);
+
+		if (pageInfo.getPageNumber() > 1) {
+			pageInfo.setPageSize(pageInfo.getPageSize() * pageInfo.getPageNumber());
+			pageInfo.setPageNumber(1);
+		}
+
+		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+		SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+		SearchFilter distribute = userService.distribute();
+		if (distribute != null && distribute.getDistribute() == null) {
+			return null;
+		}
+		if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+			filter.setDistribute(distribute.getDistribute());
+		}
+		return purchaseOrderService.findEndOrders(pageInfo, filter);
+	}
+
+	/**
+	 * @param params
+	 * @param searchFilter
+	 * @author wangmh 获取已发货的订单
+	 */
+	@RequestMapping(value = "/info/nosearch", params = RequestState.RECEIVED, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseOrderReceived> getReceivedOrders(PageParams params, String searchFilter) {
+		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(待交货)");
+		JSONObject jsonObject = JSONObject.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+		if (!StringUtils.isEmpty(keyword)) {
+			return getReceivedPurchaseOrderItems(params, searchFilter);
+		}
+		PageInfo pageInfo = new PageInfo(params);
+
+		if (pageInfo.getPageNumber() > 1) {
+			pageInfo.setPageSize(pageInfo.getPageSize() * pageInfo.getPageNumber());
+			pageInfo.setPageNumber(1);
+		}
+
+		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+		SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+		SearchFilter distribute = userService.distribute();
+		if (distribute != null && distribute.getDistribute() == null) {
+			return null;
+		}
+		if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+			filter.setDistribute(distribute.getDistribute());
+		}
+		return purchaseOrderService.findReceivedOrders(pageInfo, filter);
+	}
+
+	/**
+	 * @param params
+	 * @param searchFilter
+	 * @author yujia 获取待发货的订单
+	 */
+	@RequestMapping(value = "/info/nosearch", params = RequestState.WAITING, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseOrderWaiting> getWaitingOrders(PageParams params, String searchFilter) {
+		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(待交货)");
+		JSONObject jsonObject = JSONObject.parseObject(searchFilter);
+		String keyword = jsonObject.getString("keyword");
+		if (!StringUtils.isEmpty(keyword)) {
+			return getWaitingPurchaseOrderItems(params, searchFilter);
+		}
+		PageInfo pageInfo = new PageInfo(params);
+
+		if (pageInfo.getPageNumber() > 1) {
+			pageInfo.setPageSize(pageInfo.getPageSize() * pageInfo.getPageNumber());
+			pageInfo.setPageNumber(1);
+		}
+
+		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+		SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+		SearchFilter distribute = userService.distribute();
+		if (distribute != null && distribute.getDistribute() == null) {
+			return null;
+		}
+		if (distribute != null && !CollectionUtils.isEmpty(distribute.getDistribute())) {
+			filter.setDistribute(distribute.getDistribute());
+		}
+		return purchaseOrderService.findWaitingOrders(pageInfo, filter);
+	}
+
+	/**
+	 * 获取单据数据统计
+	 * @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("all", purchaseOrderService.countSaleAllOrders(vendUU, enUUs));
+		modelMap.put("received", purchaseOrderService.countSaleReceivedOrders(vendUU, enUUs));
+		modelMap.put("waiting", purchaseOrderService.countSaleWaitingOrders(vendUU, enUUs));
+		return modelMap;
+	}
+
+}

+ 0 - 139
src/main/java/com/uas/platform/b2b/manage/model/AccountInfo.java

@@ -1,139 +0,0 @@
-package com.uas.platform.b2b.manage.model;
-
-import com.uas.platform.b2b.model.Enterprise;
-import com.uas.platform.b2b.model.User;
-import com.uas.platform.b2b.model.UserBaseInfo;
-
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * 账户信息
- *
- * @author US50
- */
-public class AccountInfo {
-
-	/**
-	 * 企业UU号
-	 */
-	private Long enUU;
-
-	/**
-	 * 个人UU号
-	 */
-	private Long userUU;
-
-    /**
-     * 姓名
-     */
-	private String name;
-
-	/**
-	 * 手机号
-	 */
-	private String tel;
-	/**
-	 * 邮箱
-	 */
-	private String email;
-
-	/**
-	 * 密码(密文)
-	 */
-	private String password;
-
-    /**
-     * imID
-     */
-	private Long userIMId;
-
-	public Long getUserIMId() {
-		return userIMId;
-	}
-
-	public void setUserIMId(Long userIMId) {
-		this.userIMId = userIMId;
-	}
-
-	public void setEnUU(Long enUU) {
-		this.enUU = enUU;
-	}
-
-	public Long getEnUU() {
-		return enUU;
-	}
-
-	public Long getUserUU() {
-		return userUU;
-	}
-
-	public void setUserUU(Long userUU) {
-		this.userUU = userUU;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public String getTel() {
-		return tel;
-	}
-
-	public void setTel(String tel) {
-		this.tel = tel;
-	}
-
-	public String getEmail() {
-		return email;
-	}
-
-	public void setEmail(String email) {
-		this.email = email;
-	}
-
-	public String getPassword() {
-		return password;
-	}
-
-	public void setPassword(String password) {
-		this.password = password;
-	}
-
-	public AccountInfo() {
-	}
-
-	public AccountInfo(UserBaseInfo user, long enUU) {
-		this.email = user.getUserEmail();
-		this.enUU = enUU;
-		this.name = user.getUserName();
-		this.password = user.getUserPwd();
-		this.tel = user.getUserTel();
-		this.userUU = user.getUserUU();
-		this.userIMId = user.getUserIMId();
-	}
-
-	public User convert() {
-		User user = new User();
-		user.setUserUU(this.userUU);
-		user.setUserEmail(this.email);
-		user.setUserName(this.name);
-		user.setUserTel(this.tel);
-		user.setUserPwd(this.password);
-		user.setUserIMId(this.userIMId);
-		if (this.enUU != null) {
-			Enterprise enterprise = new Enterprise();
-			enterprise.setUu(this.enUU);
-			Set<Enterprise> enterprises = new HashSet<Enterprise>();
-			enterprises.add(enterprise);
-			user.setEnterprises(enterprises);
-			user.setEnterprise(enterprise);
-		}
-		return user;
-	}
-
-}

+ 3 - 3
src/main/java/com/uas/platform/b2b/model/PurchaseOrderAll.java

@@ -47,7 +47,7 @@ public class PurchaseOrderAll {
 	 */
 	@OneToOne(cascade = { CascadeType.REFRESH })
 	@JoinColumn(name = "pu_useruu", insertable = false, updatable = false)
-	private User user;
+	private UserBaseInfo user;
 
 	/**
 	 * 采购单所属采购员UU
@@ -370,11 +370,11 @@ public class PurchaseOrderAll {
 		this.enterprise = enterprise;
 	}
 
-	public User getUser() {
+	public UserBaseInfo getUser() {
 		return user;
 	}
 
-	public void setUser(User user) {
+	public void setUser(UserBaseInfo user) {
 		this.user = user;
 	}
 

+ 15 - 14
src/main/java/com/uas/platform/b2b/model/UserBaseInfo.java

@@ -41,12 +41,6 @@ public class UserBaseInfo implements Serializable {
 	@Column(name = "user_name")
 	private String userName;
 
-    /**
-     * 密码
-     */
-	@Column(name = "user_pwd")
-	private String userPwd;
-
     /**
      * 邮箱
      */
@@ -99,14 +93,6 @@ public class UserBaseInfo implements Serializable {
 		this.userName = userName;
 	}
 
-	public String getUserPwd() {
-		return userPwd;
-	}
-
-	public void setUserPwd(String userPwd) {
-		this.userPwd = userPwd;
-	}
-
 	public String getUserEmail() {
 		return userEmail;
 	}
@@ -154,4 +140,19 @@ public class UserBaseInfo implements Serializable {
     public void setTransfer(boolean transfer) {
         this.transfer = transfer;
     }
+
+    public UserBaseInfo() {
+
+	}
+
+	public UserBaseInfo(User user) {
+		this.distribute = user.getDistribute();
+		this.transfer = user.getTransfer();
+		this.userEmail = user.getUserEmail();
+		this.userIMId = user.getUserIMId();
+		this.userName = user.getUserName();
+		this.userSex = user.getUserSex();
+		this.userTel = user.getUserTel();
+		this.userUU = user.getUserUU();
+	}
 }

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

@@ -100,4 +100,12 @@ public interface ErpProdIODetailService {
      * @return 统计结果
      */
     List<ApCheckAmount> countSendAmounts(List<ErpProdIODetail> details);
+
+    /**
+     * 根据id获取验收明细
+     * @param sourceTable
+     * @param sourceId
+     * @return
+     */
+    List<ErpProdIODetail> getBySourceTableAndSourceId(String sourceTable, Long sourceId);
 }

+ 7 - 0
src/main/java/com/uas/platform/b2b/service/PurchaseApCheckService.java

@@ -306,4 +306,11 @@ public interface PurchaseApCheckService {
      * @param vendorList 供应商信息
      */
     void updateCheckByVendorInfo(List<VendorInfo> vendorList);
+
+	/**
+	 * 确认对账,明细只传简要信息,sourceTable & sourceId
+	 * @param apCheck
+	 * @return
+	 */
+	ModelMap checkCountWithSimpleDetail(PurchaseApCheck apCheck);
 }

+ 14 - 0
src/main/java/com/uas/platform/b2b/service/PurchaseNoticeService.java

@@ -284,4 +284,18 @@ public interface PurchaseNoticeService {
 	 * @return SPage封装的数据
 	 */
     SPage<PurchaseNotice> findNoticesByPageInfo(PageInfo pageInfo, String keyword, SearchFilter filter, String state);
+
+	/**
+	 * 根据供应商UU号获取所有的送货提醒数量
+	 * @param vendUU
+	 * @return
+	 */
+	long countAll(Long vendUU);
+
+	/**
+	 * 根据供应商UU号获取待发货的送货提醒数量
+	 * @param vendUU
+	 * @return
+	 */
+	int countTodo(Long vendUU);
 }

+ 38 - 0
src/main/java/com/uas/platform/b2b/service/PurchaseOrderService.java

@@ -17,6 +17,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;
 
 public interface PurchaseOrderService {
@@ -344,4 +345,41 @@ public interface PurchaseOrderService {
      */
     void replyByBatch(String idString, String username, String userip, Long enuu, Long useruu, Long date);
 
+	/**
+	 * 根据供应商UU号和分配客户UU号获取订单个数
+	 * @param vendUU
+	 * @param enUUs
+	 * @return
+	 */
+    long countSaleAllOrders(Long vendUU, Collection enUUs);
+
+	/**
+	 * 根据供应商UU号和分配客户UU号获取待发货订单个数
+	 * @param vendUU
+	 * @param enUUs
+	 * @return
+	 */
+    int countSaleWaitingOrders(Long vendUU, Collection enUUs);
+
+	/**
+	 * 根据供应商UU号和分配客户UU号获取已收货订单个数
+	 * @param vendUU
+	 * @param enUUs
+	 * @return
+	 */
+    int countSaleReceivedOrders(Long vendUU, Collection enUUs);
+
+	/**
+	 * 根据客户UU号获取订单个数
+	 * @param enUu
+	 * @return
+	 */
+	long countPurchaseAllOrders(Long enUu);
+
+	/**
+	 * 根据客户UU号获取待发货订单个数
+	 * @param enUu
+	 * @return
+	 */
+    int countPurchaseWaitingOrders(Long enUu);
 }

+ 3 - 2
src/main/java/com/uas/platform/b2b/service/impl/BaseInfoServiceImpl.java

@@ -531,8 +531,9 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 		order.setRecorder(SystemSession.getUser().getUserName());
 		order.setUserUU(SystemSession.getUser().getUserUU());
 		order.setEnterprise(enter);
-		order.setUser(SystemSession.getUser());
-		if (userBaseInfo != null) {// 如果供应商联系人存在uu号,录入该uu号;如果不存在,录入企业管理员uu
+		order.setUser(new UserBaseInfo(SystemSession.getUser()));
+		// 如果供应商联系人存在uu号,录入该uu号;如果不存在,录入企业管理员uu
+		if (userBaseInfo != null) {
 			order.setVendUserUU(userBaseInfo.getUserUU());
 		} else {
 			order.setVendUserUU(neworder.getVendUserUU());

+ 184 - 7
src/main/java/com/uas/platform/b2b/service/impl/ErpProdIODetailServiceImpl.java

@@ -8,13 +8,7 @@ import com.uas.platform.b2b.core.util.ThreadUtils;
 import com.uas.platform.b2b.dao.CommonDao;
 import com.uas.platform.b2b.dao.PurchaseApCheckItemInfoDao;
 import com.uas.platform.b2b.dao.VendorDao;
-import com.uas.platform.b2b.model.ApcheckKeyWord;
-import com.uas.platform.b2b.model.DateFilter;
-import com.uas.platform.b2b.model.ErpProdIODetail;
-import com.uas.platform.b2b.model.ErpProdIo;
-import com.uas.platform.b2b.model.ProductIoGroup;
-import com.uas.platform.b2b.model.PurchaseApCheckItemInfo;
-import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.publicapi.model.ApCheckAmount;
 import com.uas.platform.b2b.service.ErpProdIODetailService;
 import com.uas.platform.b2b.service.PurchaseApCheckService;
@@ -30,6 +24,7 @@ import org.apache.axis.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.persistence.Id;
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Root;
@@ -818,4 +813,186 @@ public class ErpProdIODetailServiceImpl implements ErpProdIODetailService {
         }
         return commonDao.query(sql.toString(), ErpProdIODetail.class);
     }
+
+    /**
+     * 获取待对账的委外验退单
+     *
+     * @param id 明细id
+     * @return 委外验退单
+     */
+    private List<ErpProdIODetail> getMakeReturnById(Long id) {
+        StringBuffer sql = new StringBuffer("select  mr_code as inoutno, mr_date as pidate, mr_rate as rate, mr_receivecode as receivecode, " +
+                "mr_receivename as receivename, '客户委外验退单' as piclass, 'make$returnitem' as sourcetable, ma_code as ordercode, 0 as orderdetno, " +
+                "mri_number as detno,  (-(1) *  mri_qty ) as qty, mri_orderpice as orderprice, mr_currency as currency, mri_taxrate as taxrate, " +
+                "mri_whname as whname, mri_ycheckqty as ycheckqty, make$orders.pr_code as prodcode, make$orders.pr_spec as prodspec, " +
+                "make$orders.pr_title as prodtitle, make$orders.pr_unit as produnit, " +
+                "((-(1) *  mri_qty ) - coalesce(mri_ycheckqty, 0)) as thischeckqty, mr_enuu as custuu, ma_useruu custuseruu, mr_venduu as enuu, mri_id as sourceid, " +
+                "mr_sendcode as sendcode, ma_factory as pd_factory, en_name custname, mri_payment payment from make$return  " +
+                "join make$returnitem on mr_id =  mri_paid " +
+                "join make$orders on mri_odid = ma_id  " +
+                "left join sec$enterprises on mr_enuu = en_uu " +
+                " where mri_id = ").append(id);
+        return commonDao.query(sql.toString(), ErpProdIODetail.class);
+    }
+
+    /**
+     * 获取待对账的委外验收单
+     *
+     * @param id 明细id
+     * @return 委外验收单
+     */
+    private List<ErpProdIODetail> getMakeAcceptById(Long id) {
+        StringBuffer sql = new StringBuffer("select  make$accept.ma_code as inoutno, make$accept.ma_date as pidate, make$accept.ma_rate as rate, " +
+                "ma_receivecode as receivecode, ma_receivename as receivename, '客户委外验收单' as piclass, 'make$acceptitem' as sourcetable, " +
+                "make$orders.ma_code as ordercode, 0 as orderdetno, mai_number as detno, mai_qty as qty, mai_orderpice as orderprice, " +
+                "make$accept.ma_currency as currency, mai_taxrate as taxrate, mai_whname as whname, mai_ycheckqty as ycheckqty, " +
+                "make$orders.pr_code as prodcode, make$orders.pr_spec as prodspec, make$orders.pr_title as prodtitle, make$orders.pr_unit as produnit, " +
+                "(mai_qty - coalesce(mai_ycheckqty, 0)) as thischeckqty, make$accept.ma_enuu as custuu, make$orders.ma_useruu custuseruu, make$accept.ma_venduu as enuu, " +
+                "mai_id as sourceid, ma_sendcode as sendcode, ma_factory as factory, en_name custname, mai_payment payment from make$accept " +
+                "join make$acceptitem on make$accept.ma_id = mai_paid " +
+                "join make$orders on mai_odid = make$orders.ma_id " +
+                "left join sec$enterprises on make$accept.ma_enuu = en_uu " +
+                "where mai_id = ").append(id);
+        return commonDao.query(sql.toString(), ErpProdIODetail.class);
+    }
+
+    /**
+     * 获取待对账的客户不良品出库单
+     *
+     * @param id 明细id
+     * @return 客户不良品出库单
+     */
+    private List<ErpProdIODetail> getBadOutById(Long id) {
+        StringBuffer sql = new StringBuffer("select  po_code as inoutno, po_date as pidate, po_rate as rate, po_receivecode as receivecode, " +
+                "po_receivename as receivename, '客户不良品出库单' as piclass, 'purc$badoutitem' as sourcetable, pu_code as pd_ordercode, " +
+                "purc$orderitems.pd_number as orderdetno, poi_number as detno, (-(1) * poi_qty ) as qty, 0 as pd_orderprice, po_currency as currency, " +
+                "poi_taxrate as taxrate, poi_whname as whname, poi_ycheckqty as ycheckqty, pr_code as prodcode, pr_spec as prodspec, pr_title as prodtitle, pr_unit as produnit, " +
+                "((-(1) * poi_qty ) - coalesce( poi_ycheckqty, 0)) as thischeckqty, po_enuu as custuu, pu_useruu custuseruu, po_venduu as enuu, poi_id as sourceid, " +
+                "po_sendcode as sendcode, purc$orderitems.pd_factory as factory, en_name custname, poi_payment payment from purc$badout " +
+                "join purc$badoutitem on po_id = poi_poid  " +
+                "left join purc$orderitems on poi_pdid = pd_id " +
+                "left join purc$orders on pu_id = pd_puid " +
+                "left join sec$enterprises on po_enuu = en_uu " +
+                "where poi_id = ").append(id);
+        return commonDao.query(sql.toString(), ErpProdIODetail.class);
+    }
+
+    /**
+     * 获取待对账的客户不良品入库单
+     *
+     * @param id 明细id
+     * @return 客户不良品入库单
+     */
+    private List<ErpProdIODetail> getBadInById(Long id) {
+        StringBuffer sql = new StringBuffer("select pb_code as inoutno, pb_date as pidate, pb_rate as rate, pb_receivecode as receivecode, " +
+                "pb_receivename as receivename, '客户不良品入库单' as piclass, 'purc$badinitem' as sourcetable, pu_code as ordercode, " +
+                "pd_number as orderdetno, pbi_number as detno, pbi_qty as qty, 0 as pd_orderprice, pb_currency as currency, pbi_taxrate as taxrate, " +
+                "pbi_whname as whname, pbi_ycheckqty as ycheckqty, pr_code as prodcode, pr_spec as prodspec, pr_title as prodtitle, pr_unit as produnit, " +
+                "(pbi_qty - coalesce(pbi_ycheckqty, 0)) as thischeckqty, pb_enuu as custuu, pu_useruu custuseruu, pb_venduu as enuu, pbi_id as sourceid, " +
+                "pb_sendcode as sendcode, pd_factory as factory, en_name custname, pbi_payment payment from purc$badin " +
+                "join purc$badinitem on pb_id = pbi_pbid " +
+                "left join purc$orderitems on pbi_pdid = pd_id " +
+                "left join purc$orders on pu_id = pd_puid " +
+                "left join sec$enterprises on pb_enuu = en_uu " +
+                "where pbi_id = ").append(id);
+        return commonDao.query(sql.toString(), ErpProdIODetail.class);
+    }
+
+    /**
+     * 获取待对账的客户采购验退单信息
+     *
+     * @param id 明细id
+     * @return 客户采购验退单信息
+     */
+    private List<ErpProdIODetail> getSaleReturnById(Long id) {
+        StringBuffer sql = new StringBuffer("select purc$return.pr_code as inoutno, pr_date as pidate, pr_rate as rate, pr_receivecode as receivecode, " +
+                "pr_receivename as receivename, '客户采购验退单' as piclass, 'purc$returnitem' as sourcetable, pu_code as ordercode, pd_number as orderdetno, " +
+                "pri_number as detno, (-(1) * pri_qty ) as qty, pri_orderprice as orderprice, pr_currency as currency, pri_taxrate as taxrate, " +
+                "pri_whname as whname, purc$returnitem.pr_code as prodcode, purc$returnitem.pr_spec as prodspec, purc$returnitem.pr_title as prodtitle, purc$returnitem.pr_unit as produnit, " +
+                "pri_ycheckqty as ycheckqty, ((-(1) * pri_qty ) - coalesce(pri_ycheckqty, 0)) as thischeckqty, pr_enuu as custuu, pu_useruu custuseruu, pr_venduu as enuu, " +
+                "pri_id as sourceid, pr_sendcode as sendcode, pd_factory as factory, en_name custname, pri_payment payment from purc$return " +
+                "join purc$returnitem on pr_id = pri_prid " +
+                "left join purc$orderitems on pri_pdid = pd_id " +
+                "left join purc$orders on pu_id = pd_puid " +
+                "left join sec$enterprises on pr_enuu = en_uu " +
+                "where pri_id = ").append(id);
+        return commonDao.query(sql.toString(), ErpProdIODetail.class);
+    }
+
+    /**
+     * 获取待对账的客户采购验收单信息
+     *
+     * @param id 明细id
+     * @return 客户采购验收单信息
+     */
+    private List<ErpProdIODetail> getSaleAcceptById(Long id) {
+        StringBuilder sql = new StringBuilder("select pa_code as inoutno, pa_date as pidate, pa_rate as rate, pa_receivecode as receivcode, pa_receivename as receivename, '客户采购验收单' as piclass, 'purc$acceptitem' as sourcetable, pu_code as ordercode," +
+                " pd_number as orderdetno, pai_number as detno, pai_qty as qty, pai_orderprice as orderprice, pa_currency as currency," +
+                " pai_taxrate as taxrate,  pai_whname as whname, purc$acceptitem.pr_code as prodcode, purc$acceptitem.pr_spec as prodspec, purc$acceptitem.pr_unit as produnit," +
+                " purc$acceptitem.pr_title as prodtitle, pai_ycheckqty as ycheckqty, (pai_qty - coalesce(pai_ycheckqty, 0)) as thischeckqty," +
+                " pa_enuu as custuu, pu_useruu custuseruu, pa_venduu as enuu, pai_id as sourceid, pa_sendcode as sendcode, pd_factory as factory, en_name custname," +
+                " pai_payment payment, b2b_si_id sendId,si_price sendPrice,si_qty sendQty from purc$accept" +
+                " join purc$acceptitem on pai_paid = pa_id" +
+                " left join purc$orderitems on pai_pdid = pd_id" +
+                " left join purc$orders on purc$orders.pu_id = pd_puid" +
+                " left join sec$enterprises on pa_enuu = en_uu" +
+                " left join sale$senditem on b2b_si_id = si_id" +
+                " where pai_id =").append(id);
+        return commonDao.query(sql.toString(), ErpProdIODetail.class);
+    }
+
+    /**
+     * 获取待对账的货款调账信息
+     *
+     * @param id 明细id
+     * @return 货款调账信息
+     */
+    private List<ErpProdIODetail> getAdjustmentByid(Long id) {
+        StringBuffer sql = new StringBuffer("select aa_inoutno inoutno, aa_orderdate pidate, aa_rate rate, aa_receivecode receivecode, " +
+                "aa_receivename receivename, '货款调账' as piclass, 'purc$apbilladjustment' as sourcetable, aa_ordercode ordercode, " +
+                "aa_orderdetno orderdetno, aa_detno detno, aa_prid prid, aa_prodcode prodcode, aa_prodspec prodspec, aa_prodtitle prodtitle, aa_produnit as produnit, " +
+                "aa_qty qty, aa_orderprice orderprice, aa_currency currency, aa_taxrate taxrate, aa_whname whname, aa_ycheckqty ycheckqty, " +
+                "(aa_qty - coalesce(aa_ycheckqty, 0)) as thischeckqty, aa_custuu custuu, aa_custuseruu custuseruu, aa_enuu enuu, aa_id sourceid, aa_sendcode sendcode, " +
+                "aa_factory factory, aa_custname custname, aa_payment payment from purc$apbilladjustment" +
+                " where aa_id = ").append(id);
+        return commonDao.query(sql.toString(), ErpProdIODetail.class);
+    }
+
+    /**
+     * 根据id获取验收明细
+     *
+     * @param sourceTable
+     * @param sourceId
+     * @return
+     */
+    @Override
+    public List<ErpProdIODetail> getBySourceTableAndSourceId(String sourceTable, Long sourceId) {
+        List<ErpProdIODetail> erpProdIODetails = new ArrayList<>();
+        switch (sourceTable) {
+            case ApCheckTable.ADJUSTMENT:
+                erpProdIODetails = getAdjustmentByid(sourceId);
+                break;
+            case ApCheckTable.MAKE_ACCEPT:
+                erpProdIODetails = getMakeAcceptById(sourceId);
+                break;
+            case ApCheckTable.MAKE_RETURN:
+                erpProdIODetails = getMakeReturnById(sourceId);
+                break;
+            case ApCheckTable.SALE_ACCEPT:
+                erpProdIODetails = getSaleAcceptById(sourceId);
+                break;
+            case ApCheckTable.SALE_BADIN:
+                erpProdIODetails = getBadInById(sourceId);
+                break;
+            case ApCheckTable.SALE_BADOUT:
+                erpProdIODetails = getBadOutById(sourceId);
+                break;
+            case ApCheckTable.SALE_RETURN:
+                erpProdIODetails = getSaleReturnById(sourceId);
+                break;
+            default:
+                break;
+        }
+        return erpProdIODetails;
+    }
 }

+ 71 - 14
src/main/java/com/uas/platform/b2b/service/impl/PurchaseApCheckServiceImpl.java

@@ -14,20 +14,7 @@ import com.uas.platform.b2b.dao.PurchaseApCheckItemDao;
 import com.uas.platform.b2b.dao.PurchaseApCheckTodoDao;
 import com.uas.platform.b2b.dao.VendorDao;
 import com.uas.platform.b2b.erp.model.VendorInfo;
-import com.uas.platform.b2b.model.ApCheckTable;
-import com.uas.platform.b2b.model.CommunalLog;
-import com.uas.platform.b2b.model.DateFilter;
-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.PurcApCheck;
-import com.uas.platform.b2b.model.PurchaseApCheck;
-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.SourceForApcheck;
-import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.model.util.ApCheckAllCountSqls;
 import com.uas.platform.b2b.model.util.ApCheckDoneCountSqls;
 import com.uas.platform.b2b.model.util.ApCheckTodoCountSqls;
@@ -1228,4 +1215,74 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
             communalLogDao.save(log);
         }
     }
+
+	/**
+	 * 确认对账,明细只传简要信息,sourceTable & sourceId
+	 *
+	 * @param apCheck
+	 * @return
+	 */
+	@Override
+	public ModelMap checkCountWithSimpleDetail(PurchaseApCheck apCheck) {
+		boolean first = true;
+		double checkAmount = 0;
+		apCheck.setEnUu(SystemSession.getUser().getEnterprise().getUu());
+		for (PurchaseApCheckItem apCheckItem : apCheck.getItems()) {
+			List<ErpProdIODetail> erpProdIODetails = erpProdIODetailService.getBySourceTableAndSourceId(apCheckItem.getSourceTable(), apCheckItem.getSourceId());
+			if(!CollectionUtils.isEmpty(erpProdIODetails)) {
+				ErpProdIODetail erpProdIODetail = erpProdIODetails.get(0);
+				// 赋值明细
+				convertErpProdIODetail(apCheckItem, erpProdIODetail);
+				// 计算总金额
+				checkAmount += apCheckItem.getAmount();
+				// 赋值主表
+				if (first) {
+					apCheck.setCustUu(erpProdIODetail.getCustuu());
+					apCheck.setCustName(erpProdIODetail.getCustname());
+					apCheck.setApDate(erpProdIODetail.getPidate());
+					apCheck.setCheckStatus("未对账");
+					apCheck.setCurrency(erpProdIODetail.getCurrency());
+					apCheck.setRate(erpProdIODetail.getRate());
+					apCheck.setTaxrate(erpProdIODetail.getTaxrate());
+				}
+				first = false;
+			} else {
+				throw new IllegalOperatorException("无效的明细数据:" + apCheckItem.getSourceTable() + ", " + apCheckItem.getSourceId());
+			}
+		}
+		apCheck.setCheckAmount(checkAmount);
+		return checkCount(apCheck);
+	}
+
+	/**
+	 * 将ErpProdIODetail的信息赋值给PurchaseApCheckItem
+	 * @param apCheckItem
+	 * @param erpProdIODetail
+	 */
+	private void convertErpProdIODetail(PurchaseApCheckItem apCheckItem, ErpProdIODetail erpProdIODetail) {
+		apCheckItem.setInoutno(erpProdIODetail.getInoutno());
+		apCheckItem.setInoutnodetno(erpProdIODetail.getDetno());
+		apCheckItem.setOrderCode(erpProdIODetail.getOrdercode());
+		apCheckItem.setOrderClass(erpProdIODetail.getPiclass());
+		apCheckItem.setOrderDetno(erpProdIODetail.getOrderdetno());
+		apCheckItem.setPrice(erpProdIODetail.getOrderprice());
+		apCheckItem.setCheckQty(erpProdIODetail.getThischeckqty());
+		apCheckItem.setAmount((erpProdIODetail.getThischeckqty() == null ? 0 : erpProdIODetail.getThischeckqty()) *
+				(erpProdIODetail.getOrderprice() == null ? 0 : erpProdIODetail.getOrderprice()));
+		apCheckItem.setStatus(0);
+		apCheckItem.setReceiveName(erpProdIODetail.getReceivename());
+		apCheckItem.setReceiveCode(erpProdIODetail.getReceivecode());
+		apCheckItem.setProdCode(erpProdIODetail.getProdcode());
+		apCheckItem.setProdTitle(erpProdIODetail.getProdtitle());
+		apCheckItem.setProdSpec(erpProdIODetail.getProdspec());
+		apCheckItem.setProdUnit(erpProdIODetail.getProdunit());
+		apCheckItem.setTaxrate(erpProdIODetail.getTaxrate());
+		apCheckItem.setSendcode(erpProdIODetail.getSendcode());
+		apCheckItem.setWhname(erpProdIODetail.getWhname());
+		apCheckItem.setCustUserUU(erpProdIODetail.getCustuseruu());
+		apCheckItem.setSendId(erpProdIODetail.getSendId());
+		apCheckItem.setSendQty(erpProdIODetail.getSendQty());
+		apCheckItem.setSendPrice(erpProdIODetail.getSendPrice());
+		apCheckItem.setSourceDate(erpProdIODetail.getPidate());
+	}
 }

+ 22 - 0
src/main/java/com/uas/platform/b2b/service/impl/PurchaseNoticeServiceImpl.java

@@ -1076,4 +1076,26 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
         Set<Long> idSet = new HashSet<>(ids);
         return purchaseNoticeDao.findAll(idSet);
     }
+
+	/**
+	 * 根据供应商UU号获取所有的送货提醒数量
+	 *
+	 * @param vendUU
+	 * @return
+	 */
+	@Override
+	public long countAll(Long vendUU) {
+		return purchaseNoticeDao.countByVendUU(vendUU);
+	}
+
+	/**
+	 * 根据供应商UU号获取待发货的送货提醒数量
+	 *
+	 * @param vendUU
+	 * @return
+	 */
+	@Override
+	public int countTodo(Long vendUU) {
+		return purchaseNoticeDao.getCountByVendUUAndStatus(vendUU, (short) Status.NOT_REPLY.value());
+	}
 }

+ 36 - 6
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java

@@ -73,12 +73,7 @@ import javax.persistence.criteria.JoinType;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 import javax.persistence.criteria.SetJoin;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * 采购订单
@@ -842,4 +837,39 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
         List<PurchaseOrderReply> replies = findReplyByOrderItem(orderItemId);
         return CollectionUtils.isEmpty(replies) ? 0 : replies.get(0).getQty();
     }
+
+	@Override
+    public long countSaleAllOrders(Long vendUU, Collection enUUs) {
+		if (CollectionUtils.isEmpty(enUUs)) {
+			return purchaseOrderAllDao.countByVendUU(vendUU);
+		}
+		return purchaseOrderAllDao.countByVendUUAndEnUUs(vendUU, enUUs);
+	}
+
+	@Override
+	public int countSaleWaitingOrders(Long vendUU, Collection enUUs) {
+		if (CollectionUtils.isEmpty(enUUs)) {
+			return purchaseOrderWaitingDao.countByVendUU(vendUU);
+		}
+		return purchaseOrderWaitingDao.countByVendUUAndEnUUs(vendUU, enUUs);
+	}
+
+	@Override
+	public int countSaleReceivedOrders(Long vendUU, Collection enUUs) {
+    	if (CollectionUtils.isEmpty(enUUs)) {
+			return purchaseOrderReceivedDao.countByVendUU(vendUU);
+		}
+		return purchaseOrderReceivedDao.countByVendUUAndEnUUs(vendUU, enUUs);
+	}
+
+	@Override
+	public long countPurchaseAllOrders(Long enUu) {
+		return purchaseOrderAllDao.findOrderCountByEnUU(enUu);
+	}
+
+	@Override
+	public int countPurchaseWaitingOrders(Long enUu) {
+    	return purchaseOrderWaitingDao.countByEnUU(enUu);
+	}
+
 }

+ 2 - 2
src/main/webapp/resources/tpl/index/sale/returns.html

@@ -237,8 +237,8 @@
 					<div>
 						<span ng-bind="::item.product.title"></span>
 					</div>
-					<div class="text-muted" title="{{::item.product.title}}"
-						ng-bind="::item.product.title"></div>
+					<div class="text-muted" title="{{::item.product.spec}}"
+						ng-bind="::item.product.spec"></div>
 					<div class="text-bold text-inverse" title="送货工厂"
 						ng-if="item.orderItem.factory">
 						送货工厂:<span ng-bind="::item.orderItem.factory"></span>