Browse Source

2023年3月14日18:07:36

纪新园 2 years ago
parent
commit
3df3acf884
30 changed files with 626 additions and 184 deletions
  1. 7 4
      blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java
  2. 1 0
      blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java
  3. 5 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/dto/GoodsDescDto.java
  4. 11 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/GoodsDesc.java
  5. 10 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/ICorpsDescClient.java
  6. 3 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/IFeesDescClient.java
  7. 11 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/IGoodsDescClient.java
  8. 22 7
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/feign/IOrderDescClient.java
  9. 4 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/feign/IOrderItemsClient.java
  10. 97 52
      blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/feign/IStockGoodsClient.java
  11. 14 1
      blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/vo/AppStockPartsVO.java
  12. 7 0
      blade-service/blade-client/src/main/java/org/springblade/client/corps/feign/CorpsDescClient.java
  13. 14 14
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsAddrServiceImpl.java
  14. 26 4
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsDescServiceImpl.java
  15. 10 0
      blade-service/blade-client/src/main/java/org/springblade/client/fees/feign/FeesDescClient.java
  16. 5 1
      blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java
  17. 9 0
      blade-service/blade-client/src/main/java/org/springblade/client/goods/excel/GoodsInfoPartsExcel.java
  18. 13 2
      blade-service/blade-client/src/main/java/org/springblade/client/goods/feign/GoodsDescClient.java
  19. 47 1
      blade-service/blade-client/src/main/java/org/springblade/client/goods/service/impl/GoodsDescServiceImpl.java
  20. 23 13
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/TongLianPaymentController.java
  21. 18 5
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java
  22. 28 11
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderItemsClient.java
  23. 31 2
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  24. 3 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/wing/accessories/WebpageController.java
  25. 38 25
      blade-service/blade-stock/src/main/java/org/springblade/stock/controller/StockGoodsController.java
  26. 43 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/feign/StockGoodsClient.java
  27. 65 21
      blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.xml
  28. 1 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/service/IStockGoodsService.java
  29. 28 4
      blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java
  30. 32 17
      blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

+ 7 - 4
blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java

@@ -30,10 +30,10 @@ import org.springblade.system.entity.Tenant;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.entity.UserInfo;
+import org.springblade.system.user.entity.WxUnionIdOpenId;
 import org.springblade.system.user.enums.UserEnum;
 import org.springblade.system.user.feign.IUserClient;
 import org.springblade.system.user.feign.IWxUnionIdOpenIdClient;
-import org.springblade.system.user.entity.WxUnionIdOpenId;
 import org.springframework.security.core.authority.AuthorityUtils;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
@@ -90,7 +90,10 @@ public class BladeUserDetailsServiceImpl implements UserDetailsService {
 				}
 				user = userClient.loginByAccount(null, username, "4", tenant.getData().getTenantId());
 				if (ObjectUtils.isNull(user)) {
-//					throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND);
+					User user1 = userClient.loginByAccount(null, username, null, tenant.getData().getTenantId());
+					if (ObjectUtils.isNotNull(user1.getUserType()) && 4 != user1.getUserType()) {
+						throw new UsernameNotFoundException(TokenUtil.USER_NOT_FORBIDDEN);
+					}
 					//用户不存在,注册用户
 					User saveUser = new User();
 					saveUser.setOpenId(openId);
@@ -127,9 +130,9 @@ public class BladeUserDetailsServiceImpl implements UserDetailsService {
 			}
 
 			//根据unionId查询微信信息表是否存在该unionId
-			if (ObjectUtil.isNotEmpty(unionId)){
+			if (ObjectUtil.isNotEmpty(unionId)) {
 				WxUnionIdOpenId wxUnionIdOpenId = wxUnionIdOpenIdClient.getWxUnionId(unionId);
-				if (ObjectUtil.isNotEmpty(wxUnionIdOpenId)){//存在 更新公众号openid
+				if (ObjectUtil.isNotEmpty(wxUnionIdOpenId)) {//存在 更新公众号openid
 					user.setOaOpenId(wxUnionIdOpenId.getOpenId());
 				}
 			}

+ 1 - 0
blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java

@@ -68,6 +68,7 @@ public class TokenUtil {
 	public final static String USER_TYPE_HEADER_KEY = "User-Type";
 	public final static String DEFAULT_USER_TYPE = "web";
 	public final static String USER_NOT_FOUND = "用户名或密码错误";
+	public final static String USER_NOT_FORBIDDEN = "登录失败,请联系管理员!";
 	public final static String USER_HAS_NO_ROLE = "未获得用户的角色信息";
 	public final static String USER_HAS_NO_TENANT = "未获得用户的租户信息";
 	public final static String USER_HAS_NO_TENANT_PERMISSION = "租户授权已过期,请联系管理员";

+ 5 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/dto/GoodsDescDto.java

@@ -157,5 +157,10 @@ public class GoodsDescDto implements Serializable {
 	 */
 	private BigDecimal specialOffer;
 
+	/**
+	 * 销售数量
+	 */
+	private Integer salesVolumes;
+
 
 }

+ 11 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/GoodsDesc.java

@@ -330,6 +330,11 @@ public class GoodsDesc implements Serializable {
 	private String upperFrame;
 
 	/**
+	 * 销售数量
+	 */
+	private Integer salesVolumes;
+
+	/**
 	 * HS代码
 	 */
 	@TableField("HSCODE")
@@ -359,4 +364,10 @@ public class GoodsDesc implements Serializable {
 	@TableField(exist = false)
 	private String ids;
 
+	/**
+	 * 库存数量
+	 */
+	@TableField(exist = false)
+	private BigDecimal stockGoodsNumber;
+
 }

+ 10 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/ICorpsDescClient.java

@@ -27,6 +27,7 @@ public interface ICorpsDescClient {
 	String TOP = API_PREFIX + "/top";
 	String CORP_DETAILS = API_PREFIX + "/corpDetails";
 	String getMessage = API_PREFIX + "/getMessage";
+	String getMessageYCP = API_PREFIX + "/getMessageYCP";
 	String GET_CORPS_MESSAGE = API_PREFIX + "/get_corps_message";
 	String GET_BY_CNAME = API_PREFIX + "get_by_name";
 	String LIST_BY_NAME = API_PREFIX + "/listCorpByName";
@@ -69,6 +70,15 @@ public interface ICorpsDescClient {
 	R<CorpsDesc> getCorpMessage(@RequestParam("Id") Long Id);
 
 	/**
+	 * 根据id获取客户信息
+	 *
+	 * @param Id
+	 * @return
+	 */
+	@GetMapping(getMessageYCP)
+	R<CorpsDesc> getCorpMessageYCP(@RequestParam("Id") Long Id,@RequestParam("tenantId") String tenantId);
+
+	/**
 	 * 获取客户信息
 	 * @param Id
 	 * @return

+ 3 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/IFeesDescClient.java

@@ -24,6 +24,7 @@ public interface IFeesDescClient {
 	String FEESDE_SCMESSAGE = API_PREFIX + "/feesDescMessage";
 
 	String GET_FEES_BY_NAME = API_PREFIX + "/getFeesByName";
+	String GET_FEES_BY_NAME_YCP = API_PREFIX + "/getFeesByNameYCP";
 
 	/**
 	 * 获取费用详情
@@ -43,5 +44,7 @@ public interface IFeesDescClient {
 
 	@GetMapping(GET_FEES_BY_NAME)
 	R<FeesDesc> getFeesByName(@RequestParam("cname") String cName);
+	@GetMapping(GET_FEES_BY_NAME_YCP)
+	R<FeesDesc> getFeesByNameYCP(@RequestParam("cname") String cName,@RequestParam("tenantId") String tenantId);
 
 }

+ 11 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/IGoodsDescClient.java

@@ -39,6 +39,7 @@ public interface IGoodsDescClient {
 
 	String SELECT_GOODS_SPECIFICATION_ALL = API_PREFIX+ "selectGoodsSpecificationAll";
 	String GET_GOODS_IDS = API_PREFIX + "/getGoodsIds";
+	String GET_GOODS_TYPE_ID = API_PREFIX + "/getGoodsTypeId";
 
 	/**
 	 * 根据销售明细的商品id获得商品信息
@@ -208,4 +209,14 @@ public interface IGoodsDescClient {
 	 */
 	@GetMapping(GET_GOODS_IDS)
 	List<GoodsDesc> getGoodsIds(@RequestParam("cname") String cname);
+
+	/**
+	 * 获取本类型下所有子类型
+	 *
+	 * @param goodsTypeId
+	 * @param
+	 * @return
+	 */
+	@GetMapping(GET_GOODS_TYPE_ID)
+	List<GoodsType> getGoodsTypeId(@RequestParam("goodsTypeId") String goodsTypeId);
 }

+ 22 - 7
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/feign/IOrderDescClient.java

@@ -24,18 +24,19 @@ import java.util.Map;
 public interface IOrderDescClient {
 	String API_PREFIX = "/client";
 	String UPDATE_ORDER = API_PREFIX + "/updateOrder";
+	String UPDATE_ORDER_YCP = API_PREFIX + "/updateOrderYCP";
 	String GET_BY_ORDER_NO = API_PREFIX + "/getByOrderNo";
 	String GET_BY_ID = API_PREFIX + "/getById";
 	String GET_BY_CONDITIONS = API_PREFIX + "/getByConditions";
 	String GET_BY_CG_LIST = API_PREFIX + "/getByCgList";
 	String RELEASE_STOCK = API_PREFIX + "/releaseStock";
 	String GET_BY_BILLNO = API_PREFIX + "/getByBillNo";
-	String GET_BY_ORDER_FILES=API_PREFIX+"/getByOrderFiles";
-	String CORP_ANALYSIS=API_PREFIX+"/corpAnalysis";
-	String UNDER_REVIEW_TH=API_PREFIX+"/underReviewTH";
-	String PASS_CANCEL_TH=API_PREFIX+"/passCancelTH";
-	String PASS_CHECK_TH=API_PREFIX+"/passCheckTH";
-	String SHIPPING_ORDER=API_PREFIX+"/shippingOrder";
+	String GET_BY_ORDER_FILES = API_PREFIX + "/getByOrderFiles";
+	String CORP_ANALYSIS = API_PREFIX + "/corpAnalysis";
+	String UNDER_REVIEW_TH = API_PREFIX + "/underReviewTH";
+	String PASS_CANCEL_TH = API_PREFIX + "/passCancelTH";
+	String PASS_CHECK_TH = API_PREFIX + "/passCheckTH";
+	String SHIPPING_ORDER = API_PREFIX + "/shippingOrder";
 	String GET_BY_ORDER_QUANTITY = API_PREFIX + "/getByOrderQuantity";
 	String SAVE = API_PREFIX + "/save";
 
@@ -48,6 +49,15 @@ public interface IOrderDescClient {
 	@PostMapping(UPDATE_ORDER)
 	R updateOrder(@RequestBody Order order);
 
+	/**
+	 * 修改采购订单状态
+	 *
+	 * @param order
+	 * @return
+	 */
+	@PostMapping(UPDATE_ORDER_YCP)
+	R updateOrderYCP(@RequestBody Order order);
+
 	@PostMapping(GET_BY_ORDER_NO)
 	Order getByOrder(@RequestBody Order order);
 
@@ -71,6 +81,7 @@ public interface IOrderDescClient {
 
 	/**
 	 * 通过
+	 *
 	 * @return
 	 */
 	@PostMapping(GET_BY_BILLNO)
@@ -78,14 +89,16 @@ public interface IOrderDescClient {
 
 	/**
 	 * 获取订单附件
+	 *
 	 * @param srcBillId
 	 * @return
 	 */
 	@GetMapping(GET_BY_ORDER_FILES)
-	List<OrderFiles> getOrderFiles(@RequestParam("srcBillId")Long srcBillId);
+	List<OrderFiles> getOrderFiles(@RequestParam("srcBillId") Long srcBillId);
 
 	/**
 	 * 通过
+	 *
 	 * @return
 	 */
 	@PostMapping(CORP_ANALYSIS)
@@ -99,6 +112,7 @@ public interface IOrderDescClient {
 
 	@GetMapping(PASS_CHECK_TH)
 	R<Map<String, String>> passCheckTH(@RequestParam("id") Long id);
+
 	@PostMapping(SHIPPING_ORDER)
 	void shippingOrder(@RequestBody Order order);
 
@@ -107,6 +121,7 @@ public interface IOrderDescClient {
 	 */
 	@GetMapping(GET_BY_ORDER_QUANTITY)
 	List<OrderStatisticsVo> getByOrderQuantity(@RequestParam("year") Integer year, @RequestParam("month") Integer month, @RequestParam("corpId") Long corpId);
+
 	@GetMapping(SAVE)
 	boolean save(Order orderNew);
 }

+ 4 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/feign/IOrderItemsClient.java

@@ -30,6 +30,7 @@ public interface IOrderItemsClient {
 	String HISTORY_PRICE = API_PREFIX +"/historyPrice";
 	String LOT_NO = API_PREFIX +"/lotNo";
 	String SELECT_LIST = API_PREFIX +"/selectList";
+	String SELECT_LIST_YCP = API_PREFIX +"/selectListYCP";
 
 	/**
 	 * 修改订单明细发货数量
@@ -88,4 +89,7 @@ public interface IOrderItemsClient {
 	@GetMapping(SELECT_LIST)
 	R<List<OrderItems>> selectList(@RequestParam("orderId") Long orderId);
 
+	@GetMapping(SELECT_LIST_YCP)
+	R<List<OrderItems>> selectListYCP(@RequestParam("orderId") Long orderId,@RequestParam("tenantId")String tenantId);
+
 }

+ 97 - 52
blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/feign/IStockGoodsClient.java

@@ -19,9 +19,11 @@ import java.util.List;
 public interface IStockGoodsClient {
 	String API_PREFIX = "/client";
 	String SELECT_STOKE = API_PREFIX + "/select-stock";
-	String SAVE_STOCK = API_PREFIX + "/save-stock" ;
+	String SAVE_STOCK = API_PREFIX + "/save-stock";
+	String SAVE_STOCK_YCP = API_PREFIX + "/save-stockYCP";
 	String GET_STOCK = API_PREFIX + "/get_stock";
 	String UPDATE_STOCK = API_PREFIX + "/updateStock";
+	String UPDATE_STOCK_YCP = API_PREFIX + "/updateStockYCP";
 	String GET_STOCK_BY_ID = API_PREFIX + "/getStockByID";
 	String GET_ONE = API_PREFIX + "/getOne";
 	String GET_STOCK_BY_CONDITIONS = API_PREFIX + "/getStockByCondition";
@@ -31,82 +33,109 @@ public interface IStockGoodsClient {
 	String UPDATE_STOCK_GOODS = API_PREFIX + "/updateStockGoods";
 	String GET_STOCK_GOODS_ALL = API_PREFIX + "/selectStockGoodsAll";
 	String SELECT_STOCK_PARTS = API_PREFIX + "/selectStockParts";
+	String SELECT_STOCK_PARTS_YCP = API_PREFIX + "/selectStockPartsYCP";
+	String SELECT_LIST_BY_GOODS_ID = API_PREFIX + "/selectListByGoodsId";
 
 
 	@GetMapping("/stockgoods/stocklist")
-	List<StockGoods>  list(
-		@RequestParam(value = "code",required = false)String code,
-		@RequestParam(value = "cname",required = false)String cname,
-		@RequestParam(value = "brandItem",required = false)String brandItem,
-		@RequestParam(value = "placeProduction",required = false)String placeProduction,
-		@RequestParam(value = "typeno",required = false)String typeno,
-		@RequestParam(value = "typenoOne",required = false)String typenoOne,
-		@RequestParam(value = "typenoTwo",required = false)String typenoTwo,
-		@RequestParam(value = "stockName",required = false)String stockName,
-		@RequestParam(value = "brand",required = false)String brand,
-		@RequestParam(value = "tenantId",required = false)String tenantId,
-		@RequestParam(value = "createStartTime",required = false)String createStartTime,
-		@RequestParam(value = "createEndTime",required = false)String createEndTime,
-		@RequestParam(value = "size",required = false)String size,
-		@RequestParam(value = "current",required = false)String current
-									 );
+	List<StockGoods> list(
+		@RequestParam(value = "code", required = false) String code,
+		@RequestParam(value = "cname", required = false) String cname,
+		@RequestParam(value = "brandItem", required = false) String brandItem,
+		@RequestParam(value = "placeProduction", required = false) String placeProduction,
+		@RequestParam(value = "typeno", required = false) String typeno,
+		@RequestParam(value = "typenoOne", required = false) String typenoOne,
+		@RequestParam(value = "typenoTwo", required = false) String typenoTwo,
+		@RequestParam(value = "stockName", required = false) String stockName,
+		@RequestParam(value = "brand", required = false) String brand,
+		@RequestParam(value = "tenantId", required = false) String tenantId,
+		@RequestParam(value = "createStartTime", required = false) String createStartTime,
+		@RequestParam(value = "createEndTime", required = false) String createEndTime,
+		@RequestParam(value = "size", required = false) String size,
+		@RequestParam(value = "current", required = false) String current
+	);
 
 
 	/**
 	 * 查询库存总账 是否存在
-	 * @param corpId 客户id
-	 * @param storageId 仓库id
-	 * @param goodId 商品id
-	 * @param itemType 产品规格型号
-	 * @param lotNo 批次号
-	 * @param cntrNo 箱号
-	 * @param billNo 提单号
+	 *
+	 * @param corpId         客户id
+	 * @param storageId      仓库id
+	 * @param goodId         商品id
+	 * @param itemType       产品规格型号
+	 * @param lotNo          批次号
+	 * @param cntrNo         箱号
+	 * @param billNo         提单号
 	 * @param contractNumber 合同号
 	 * @return
 	 */
 	@GetMapping(SELECT_STOKE)
-	R<StockGoodsVO> selectStock(@RequestParam(value = "corpId",required = false)Long corpId,
-								@RequestParam(value = "storageId",required = false)Long storageId,
-								@RequestParam("goodId")Long goodId,
-								@RequestParam(value = "itemType",required = false)String itemType,
-								@RequestParam(value = "lotNo",required = false)String lotNo,
-								@RequestParam(value = "cntrNo",required = false)String cntrNo,
-								@RequestParam(value = "billNo",required = false)String billNo,
-								@RequestParam(value = "contractNumber",required = false)String contractNumber,
-								@RequestParam(value = "tradeType",required = false)String tradeType);
+	R<StockGoodsVO> selectStock(@RequestParam(value = "corpId", required = false) Long corpId,
+								@RequestParam(value = "storageId", required = false) Long storageId,
+								@RequestParam("goodId") Long goodId,
+								@RequestParam(value = "itemType", required = false) String itemType,
+								@RequestParam(value = "lotNo", required = false) String lotNo,
+								@RequestParam(value = "cntrNo", required = false) String cntrNo,
+								@RequestParam(value = "billNo", required = false) String billNo,
+								@RequestParam(value = "contractNumber", required = false) String contractNumber,
+								@RequestParam(value = "tradeType", required = false) String tradeType);
 
 	/**
 	 * 查询库存总账 是否存在
-	 * @param corpId 客户id
-	 * @param storageId 仓库id
-	 * @param goodId 商品id
-	 * @param itemType 产品规格型号
-	 * @param lotNo 批次号
-	 * @param cntrNo 箱号
-	 * @param billNo 提单号
+	 *
+	 * @param corpId         客户id
+	 * @param storageId      仓库id
+	 * @param goodId         商品id
+	 * @param itemType       产品规格型号
+	 * @param lotNo          批次号
+	 * @param cntrNo         箱号
+	 * @param billNo         提单号
 	 * @param contractNumber 合同号
 	 * @return
 	 */
 	@GetMapping(SELECT_STOCK_PARTS)
-	R<StockGoodsVO> selectStockParts(@RequestParam(value = "corpId",required = false)Long corpId,
-								@RequestParam(value = "storageId",required = false)Long storageId,
-								@RequestParam("goodId")Long goodId,
-								@RequestParam(value = "itemType",required = false)String itemType,
-								@RequestParam(value = "lotNo",required = false)String lotNo,
-								@RequestParam(value = "cntrNo",required = false)String cntrNo,
-								@RequestParam(value = "billNo",required = false)String billNo,
-								@RequestParam(value = "contractNumber",required = false)String contractNumber,
-								@RequestParam(value = "tradeType",required = false)String tradeType);
+	R<StockGoodsVO> selectStockParts(@RequestParam(value = "corpId", required = false) Long corpId,
+									 @RequestParam(value = "storageId", required = false) Long storageId,
+									 @RequestParam("goodId") Long goodId,
+									 @RequestParam(value = "itemType", required = false) String itemType,
+									 @RequestParam(value = "lotNo", required = false) String lotNo,
+									 @RequestParam(value = "cntrNo", required = false) String cntrNo,
+									 @RequestParam(value = "billNo", required = false) String billNo,
+									 @RequestParam(value = "contractNumber", required = false) String contractNumber,
+									 @RequestParam(value = "tradeType", required = false) String tradeType);
+
+	@GetMapping(SELECT_STOCK_PARTS_YCP)
+	R<StockGoodsVO> selectStockPartsYCP(@RequestParam(value = "corpId", required = false) Long corpId,
+									 @RequestParam(value = "storageId", required = false) Long storageId,
+									 @RequestParam("goodId") Long goodId,
+									 @RequestParam(value = "itemType", required = false) String itemType,
+									 @RequestParam(value = "lotNo", required = false) String lotNo,
+									 @RequestParam(value = "cntrNo", required = false) String cntrNo,
+									 @RequestParam(value = "billNo", required = false) String billNo,
+									 @RequestParam(value = "contractNumber", required = false) String contractNumber,
+									 @RequestParam(value = "tenantId", required = false) String tenantId,
+									 @RequestParam(value = "tradeType", required = false) String tradeType);
 
 	/**
 	 * 新增库存总账
+	 *
 	 * @param stockGoods
 	 * @return
 	 */
 	@PostMapping(SAVE_STOCK)
 	R saveStock(@RequestBody StockGoods stockGoods);
 	/**
+	 * 新增库存总账
+	 *
+	 * @param stockGoods
+	 * @return
+	 */
+	@PostMapping(SAVE_STOCK_YCP)
+	R saveStockYCP(@RequestBody StockGoods stockGoods);
+
+	/**
 	 * 订单明细查询库存总账
+	 *
 	 * @param stockGoods
 	 * @return
 	 */
@@ -118,17 +147,28 @@ public interface IStockGoodsClient {
 
 	/**
 	 * 修改库存总账
+	 *
 	 * @param stockGoods
 	 * @return
 	 */
 	@PostMapping(UPDATE_STOCK)
 	boolean updateStock(@RequestBody StockGoods stockGoods);
 
+	/**
+	 * 修改库存总账
+	 *
+	 * @param stockGoods
+	 * @return
+	 */
+	@PostMapping(UPDATE_STOCK_YCP)
+	boolean updateStockYCP(@RequestBody StockGoods stockGoods);
+
 	@PostMapping(UPDATE_STOCK_GOODS)
 	int updateStockGoods(@RequestBody StockGoods stockGoods);
 
 	/**
 	 * 根据库存账id获取库存id
+	 *
 	 * @param id
 	 * @return
 	 */
@@ -137,6 +177,7 @@ public interface IStockGoodsClient {
 
 	/**
 	 * 查询某一个库存
+	 *
 	 * @param stockGoods
 	 * @return
 	 */
@@ -144,23 +185,27 @@ public interface IStockGoodsClient {
 	StockGoods getOneStock(@RequestBody StockGoods stockGoods);
 
 	@GetMapping(LIST_STOCK_BY_CONDITIONS)
-    List<StockGoods> listStockByCondition(StockGoods stockGoods);
+	List<StockGoods> listStockByCondition(StockGoods stockGoods);
 
 	@PostMapping(POST_LIST_STOCK_BY_CONDITIONS)
-    List<StockGoods> postListStockByCondition(@RequestBody StockGoods stockGoods);
+	List<StockGoods> postListStockByCondition(@RequestBody StockGoods stockGoods);
 
 	/**
 	 * 根据商品id 租户 获取对应租户商品的库存数量
+	 *
 	 * @param goodId
 	 * @param tenantId
 	 * @return
 	 */
 	@GetMapping(GET_STOCK_NUMBER)
-	BigDecimal getStockNumber(@RequestParam("goodId")Long goodId,@RequestParam("tenantId")String tenantId);
+	BigDecimal getStockNumber(@RequestParam("goodId") Long goodId, @RequestParam("tenantId") String tenantId);
 
 	/***
 	 * 获取租户下所有库区
 	 */
 	@GetMapping(GET_STOCK_GOODS_ALL)
 	List<StockGoods> selectStockGoodsAll();
+
+	@GetMapping(SELECT_LIST_BY_GOODS_ID)
+	List<StockGoods> selectListByGoodsId(@RequestParam("goodId") Long id);
 }

+ 14 - 1
blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/vo/AppStockPartsVO.java

@@ -100,7 +100,7 @@ public class AppStockPartsVO {
 	/**
 	 * 产品分类Id
 	 */
-	private Long goodsTypeId;
+	private String goodsTypeId;
 
 	/**
 	 * 库存下限
@@ -126,6 +126,10 @@ public class AppStockPartsVO {
 	 */
 	private String sort;
 	/**
+	 * 排序字段  1 产品排序  2 价格排序  3 库存数量排序
+	 */
+	private String sortType;
+	/**
 	 * 产品排序
 	 */
 	private String goodsSort;
@@ -197,5 +201,14 @@ public class AppStockPartsVO {
 	 * 标准售价
 	 */
 	private BigDecimal standardPrice;
+	/**
+	 * 销售数量
+	 */
+	private Integer salesVolumes;
+
+	/**
+	 * 客户类别
+	 */
+	private String userType;
 
 }

+ 7 - 0
blade-service/blade-client/src/main/java/org/springblade/client/corps/feign/CorpsDescClient.java

@@ -23,6 +23,7 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -72,6 +73,12 @@ public class CorpsDescClient implements ICorpsDescClient {
 	public R<CorpsDesc> getCorpMessage(Long Id) {
 		return R.data(service.getById(Id));
 	}
+	@Override
+	@GetMapping(getMessageYCP)
+	@TenantIgnore
+	public R<CorpsDesc> getCorpMessageYCP(Long Id,String tenantId) {
+		return R.data(service.getOne(new LambdaQueryWrapper<CorpsDesc>().eq(CorpsDesc::getId,Id).eq(CorpsDesc::getTenantId,tenantId).eq(CorpsDesc::getIsDeleted,0)));
+	}
 
 	@Override
 	public CorpsDesc getCorpId(Long Id) {

+ 14 - 14
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsAddrServiceImpl.java

@@ -61,23 +61,23 @@ public class CorpsAddrServiceImpl extends ServiceImpl<CorpsAddrMapper, CorpsAddr
 //				if (StringUtil.isBlank(corpsAddr.getAddr())){
 //					throw new RuntimeException("地址不能为空");
 //				}
-				CorpsAddr corpsAttn = baseMapper.selectCorpsAddrCode(corpsAddr.getAddr(), corpsAddr.getPid(), SecureUtil.getTenantId());
-				if (corpsAttn != null && corpsAttn.getId() == null) {
-					throw new RuntimeException("地址不能重复:"+corpsAddr.getAddr()+"已存在");
-				} else if (corpsAttn != null && !corpsAttn.getId().equals(corpsAddr.getId())) {
-					throw new RuntimeException("地址不能重复:"+corpsAddr.getAddr()+"已存在");
-				}
-				if (ObjectUtils.isNull(corpsAddr.getAbbreviation())){
-					corpsAddr.setAttn(corpsDesc.getAttn());
-					corpsAddr.setTel(corpsDesc.getTel());
-					corpsAddr.setAbbreviation("送货地址");
-					corpsAddr.setAlias("默认地址-" + corpsDesc.getAttn());
-				}
-				if (corpsAddr.getId() == null){
+				if (ObjectUtils.isNull(corpsAddr.getId())){
+					CorpsAddr corpsAttn = baseMapper.selectCorpsAddrCode(corpsAddr.getAddr(), corpsAddr.getPid(), SecureUtil.getTenantId());
+					if (corpsAttn != null && corpsAttn.getId() == null) {
+						throw new RuntimeException("地址不能重复:"+corpsAddr.getAddr()+"已存在");
+					} else if (corpsAttn != null && !corpsAttn.getId().equals(corpsAddr.getId())) {
+						throw new RuntimeException("地址不能重复:"+corpsAddr.getAddr()+"已存在");
+					}
+					if (ObjectUtils.isNull(corpsAddr.getAbbreviation())){
+						corpsAddr.setAttn(corpsDesc.getAttn());
+						corpsAddr.setTel(corpsDesc.getTel());
+						corpsAddr.setAbbreviation("送货地址");
+						corpsAddr.setAlias("默认地址-" + corpsDesc.getAttn());
+					}
 					corpsAddr.setCreateUser(userId);
 					corpsAddr.setCreateTime(date);
 					baseMapper.insert(corpsAddr);
-				}else {
+				} else {
 					corpsAddr.setUpdateUser(userId);
 					corpsAddr.setUpdateTime(date);
 					baseMapper.updateById(corpsAddr);

+ 26 - 4
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsDescServiceImpl.java

@@ -835,6 +835,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 				corpsDesc.setCreateDept(Long.valueOf(SecureUtil.getDeptId()));
 				corpsDesc.setCreateTime(date);
 				corpsDesc.setCreateUser(userId);
+				corpsDesc.setShoppingMall("零售价");
 				baseMapper.insert(corpsDesc);
 				Long pId = corpsDesc.getId();
 				String tenantId = corpsDesc.getTenantId();
@@ -939,12 +940,33 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 			baseMapper.insert(corpsDesc);
 			Long pId = corpsDesc.getId();
 			String tenantId = corpsDesc.getTenantId();
+
+			User user = new User();
+			user.setTenantId(AuthUtil.getTenantId());
+			user.setUserType(1);
+			user.setAccount(corpsDesc.getTel());
+			user.setName(corpsDesc.getCname());
+			user.setRealName(corpsDesc.getCname());
+			user.setUserType(4);
+			user.setPhone(corpsDesc.getTel());
+			R<String> r = sysClient.getRoleIds(AuthUtil.getTenantId(), "客户");
+			if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+				user.setRoleId(r.getData());
+			}
+			user.setDeptId(AuthUtil.getDeptId());
+			user.setPostId(AuthUtil.getPostId());
+			user.setPassword(LandConstant.USER_PASSWORD);
+			R<Boolean> result = userClient.saveUser(user);
+			if (!result.isSuccess()) {
+				throw new ServiceException(result.getMsg());
+			}
+			R<User> userTemp = userClient.userByAccount(AuthUtil.getTenantId(), corpsDesc.getTel());
+			if (!userTemp.isSuccess()) {
+				throw new ServiceException(userTemp.getMsg());
+			}
 			//保护客户联系人信息
 			CorpsAttn corpsAttn = new CorpsAttn();
-			User user = userClient.loginByAccount("", corpsDesc.getTel(), "4", AuthUtil.getTenantId());
-			if (ObjectUtils.isNotNull(user)) {
-				corpsAttn.setUserId(user.getId());
-			}
+			corpsAttn.setUserId(userTemp.getData().getId());
 			corpsAttn.setCode(corpsDesc.getCname());
 			corpsAttn.setCname(corpsDesc.getCname());
 			corpsAttn.setAttn(corpsDesc.getAttn());

+ 10 - 0
blade-service/blade-client/src/main/java/org/springblade/client/fees/feign/FeesDescClient.java

@@ -10,6 +10,7 @@ import org.springblade.client.feign.IFeesDescClient;
 import org.springblade.client.vo.FeesDescVO;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -61,4 +62,13 @@ public class FeesDescClient implements IFeesDescClient {
 
 		return R.data(feesDescService.getOne(new LambdaQueryWrapper<FeesDesc>().eq(FeesDesc::getCname,cName).eq(FeesDesc::getTenantId, AuthUtil.getTenantId()).eq(FeesDesc::getIsDeleted,0)));
 	}
+
+	@Override
+	@GetMapping(GET_FEES_BY_NAME_YCP)
+	@TenantIgnore
+	public R<FeesDesc> getFeesByNameYCP(String cName,String tenantId)
+	{
+
+		return R.data(feesDescService.getOne(new LambdaQueryWrapper<FeesDesc>().eq(FeesDesc::getCname,cName).eq(FeesDesc::getTenantId,tenantId).eq(FeesDesc::getIsDeleted,0)));
+	}
 }

+ 5 - 1
blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java

@@ -227,9 +227,13 @@ public class GoodsDescController extends BladeController {
 					List<String> typeStr = types.stream().map(GoodsType::getCname).collect(Collectors.toList());
 					e.setGoodsTypeName(typeStr.toString().replace("[", "").replace("]", ""));
 				}
-
 				e.setPolicyName(salesPolicyClient.getPolicyName(e.getId()));
 				e.setShoppingMall(finalShoppingMall);
+
+				List<StockGoods> stockGoodsList = stockGoodsClient.selectListByGoodsId(e.getId());
+				if (ObjectUtils.isNotNull(stockGoodsList) && stockGoodsList.size()>0){
+					e.setStockGoodsNumber(stockGoodsList.stream().map(StockGoods::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				}
 			});
 		}
 		return R.data(iPage);

+ 9 - 0
blade-service/blade-client/src/main/java/org/springblade/client/goods/excel/GoodsInfoPartsExcel.java

@@ -75,6 +75,15 @@ public class GoodsInfoPartsExcel implements Serializable {
 	@ExcelProperty("是否批次号管理")
 	private String whether;
 
+	//仓库名称
+	@ExcelProperty("仓库名称")
+	private String storehouse;
+
+	//库存数量
+	@ExcelProperty("库存数量")
+	private BigDecimal quantity;
+
+
 
 
 

+ 13 - 2
blade-service/blade-client/src/main/java/org/springblade/client/goods/feign/GoodsDescClient.java

@@ -3,6 +3,7 @@ package org.springblade.client.goods.feign;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
@@ -53,7 +54,7 @@ public class GoodsDescClient implements IGoodsDescClient {
 	 */
 	@Override
 	@GetMapping(GOODS_ITEMSID)
-	public List<GoodsDesc> selectItemsIdGoods(String itemIds){
+	public List<GoodsDesc> selectItemsIdGoods(String itemIds) {
 		return goodsDescService.selectItemsIdGoods(itemIds);
 	}
 
@@ -266,8 +267,18 @@ public class GoodsDescClient implements IGoodsDescClient {
 		LambdaQueryWrapper<GoodsDesc> goodsDescLambdaQueryWrapper = new LambdaQueryWrapper<>();
 		goodsDescLambdaQueryWrapper.eq(GoodsDesc::getTenantId, AuthUtil.getTenantId())
 			.eq(GoodsDesc::getIsDeleted, 0)
-			.and(i ->i.like(GoodsDesc::getCname,cname).or().like(GoodsDesc::getCode,cname));
+			.and(i -> i.like(GoodsDesc::getCname, cname).or().like(GoodsDesc::getCode, cname));
 
 		return goodsDescService.list(goodsDescLambdaQueryWrapper);
 	}
+
+	@Override
+	public List<GoodsType> getGoodsTypeId(String goodsTypeId) {
+		LambdaQueryWrapper<GoodsType> goodsDescLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		goodsDescLambdaQueryWrapper.eq(GoodsType::getTenantId, AuthUtil.getTenantId())
+			.eq(GoodsType::getIsDeleted, 0)
+			.eq(GoodsType::getParentId, goodsTypeId);
+		List<GoodsType> goodsTypeList = goodsDescType.list(goodsDescLambdaQueryWrapper);
+		return goodsTypeList;
+	}
 }

+ 47 - 1
blade-service/blade-client/src/main/java/org/springblade/client/goods/service/impl/GoodsDescServiceImpl.java

@@ -34,6 +34,7 @@ import org.springblade.client.goods.excel.GoodsInfoExcel;
 import org.springblade.client.goods.excel.GoodsInfoPartsExcel;
 import org.springblade.client.goods.mapper.*;
 import org.springblade.client.goods.service.IGoodsDescService;
+import org.springblade.client.serial.mapper.StorageDescMapper;
 import org.springblade.client.vo.GoodsDescVO;
 import org.springblade.client.vo.ProductVO;
 import org.springblade.core.log.exception.ServiceException;
@@ -51,6 +52,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.math.MathContext;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -73,6 +76,7 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 	 * 商品类别信息
 	 */
 	private final GoodsTypeServiceImpl goodsTypeService;
+	private final StorageDescMapper storageDescMapper;
 	private final GoodsTypeMapper goodsTypeMapper;
 	private final GoodsDescMapper goodsDescMapper;
 	private final GoodsPriceMapper goodsPriceMapper;
@@ -738,7 +742,7 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 		}
 		// 主表修改,子表看情况
 		else {
-			if ("1".equals(goodsDesc.getUpperFrame())){
+			if ("1".equals(goodsDesc.getUpperFrame())) {
 				throw new RuntimeException("产品已上架,请先下架产品在进行修改!");
 			}
 			if (StringUtil.isBlank(goodsDesc.getCnameInt())) {
@@ -851,6 +855,48 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 					goodsDesc.setUpdateUser(AuthUtil.getUserId());
 					goodsDescMapper.updateById(goodsDesc);
 				}
+
+				if (ObjectUtils.isNotNull(e.getQuantity()) && ObjectUtils.isNotNull(e.getStorehouse())) {
+
+					StorageDesc storageDesc = storageDescMapper.selectOne(new LambdaQueryWrapper<StorageDesc>()
+						.eq(StorageDesc::getTenantId, AuthUtil.getTenantId())
+						.eq(StorageDesc::getIsDeleted, 0)
+						.eq(StorageDesc::getCname, e.getStorehouse()));
+					if (ObjectUtils.isNull(storageDesc)) {
+						throw new RuntimeException("仓库:" + e.getStorehouse() + "不存在,导入失败");
+					}
+					BigDecimal stockPrice = new BigDecimal("0.00");
+					BigDecimal surplusRouteQuantity = new BigDecimal("0.00");
+					BigDecimal balanceQuantity = new BigDecimal("0.00");
+					BigDecimal balanceAmount = new BigDecimal("0.00");
+					R<StockGoodsVO> r = stockGoodsClient.selectStockParts(null, storageDesc.getId(), goodsDesc.getId(), null, null, null, null, null, null);
+					if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+						r.getData().setUpdateTime(new Date());
+						r.getData().setUpdateUser(SecureUtil.getUserId());
+
+						surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().add(e.getQuantity()));
+						balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
+						balanceAmount = balanceAmount.add(balanceQuantity.multiply(e.getPurchasePrice(), MathContext.DECIMAL32));
+						stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+
+						r.getData().setInQuantity(r.getData().getInQuantity().add(e.getQuantity()));
+						r.getData().setInAmount(r.getData().getInAmount().add(e.getQuantity().multiply(e.getPurchasePrice())));
+						r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
+						r.getData().setBalanceQuantity(balanceQuantity);
+						r.getData().setBalanceAmount(balanceAmount);
+						r.getData().setStockPrice(stockPrice);
+						stockGoodsClient.updateStock(r.getData());
+					} else {
+						StockGoods stockGoods = new StockGoods();
+						stockGoods.setSurplusRouteQuantity(e.getQuantity());
+						stockGoods.setPurchasePrice(goodsDesc.getPurchasePrice());
+						stockGoods.setStockPrice(goodsDesc.getPurchasePrice());
+						stockGoods.setBalanceAmount(e.getQuantity().multiply(goodsDesc.getPurchasePrice()));
+						stockGoods.setTenantId(AuthUtil.getTenantId());
+						stockGoods.setGoodsId(goodsDesc.getId());
+						stockGoodsClient.saveStock(stockGoods);
+					}
+				}
 			} else {
 				throw new SecurityException("未添加分类或者分类不存在");
 			}

+ 23 - 13
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/TongLianPaymentController.java

@@ -169,11 +169,14 @@ public class TongLianPaymentController extends BladeController {
 							settlementList.add(settlement);
 							selectOrder.setCurrentAmount(selectOrder.getRmbAmount());
 							if ("2".equals(selectOrder.getOrderSource())) {
-								R<List<OrderItems>> res = orderItemsClient.selectList(selectOrder.getId());
+								System.out.println("第三步");
+								R<List<OrderItems>> res = orderItemsClient.selectListYCP(selectOrder.getId(),order.getTenantId());
 								BigDecimal costAmount = new BigDecimal("0.00");
 								BigDecimal grossProfit = new BigDecimal("0.00");
 								if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+									System.out.println("第三步明细" + res.getData());
 									for (OrderItems orderItems : res.getData()) {
+										System.out.println("第三步明细数据" + orderItems.toString());
 										if ("XS".equals(selectOrder.getBillType())) {
 											orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32));
 										} else {
@@ -185,13 +188,15 @@ public class TongLianPaymentController extends BladeController {
 										BigDecimal balanceAmount = new BigDecimal("0.00");
 										orderItems.setPurchaseCost(orderItems.getPurchasePrice());
 										//获取本商品库存
-										R<StockGoodsVO> r = stockGoodsClient.selectStockParts(null, orderItems.getStorageId(), orderItems.getItemId(), null, null, null, null, null, null);
+										R<StockGoodsVO> r = stockGoodsClient.selectStockPartsYCP(null, orderItems.getStorageId(), orderItems.getItemId(), null, null, null, null, null, null,order.getTenantId());
 										if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+											System.out.println("第三步库存" + res.getData());
 											if ("XS".equals(selectOrder.getBillType())) {
+												System.out.println("第三步原库存" + r.getData().getSurplusRouteQuantity());
+												System.out.println("第三步明细数量" + orderItems.getStorageInQuantity());
 												surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().subtract(orderItems.getStorageInQuantity()));
 												balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
-
-
+												System.out.println("第三步新库存" + surplusRouteQuantity);
 												if (new BigDecimal("0.00").equals(r.getData().getSurplusRouteQuantity())) {
 													costAmount = costAmount.add(orderItems.getPurchasePrice().multiply(orderItems.getStorageInQuantity()));
 												} else {
@@ -199,7 +204,7 @@ public class TongLianPaymentController extends BladeController {
 												}
 												balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32));
 												stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
-
+												System.out.println("第三步新库存价" + stockPrice);
 												r.getData().setOutQuantity(r.getData().getOutQuantity().add(orderItems.getStorageInQuantity()));
 												r.getData().setOutAmount(r.getData().getOutAmount().add(costAmount));
 
@@ -221,7 +226,9 @@ public class TongLianPaymentController extends BladeController {
 											r.getData().setBalanceQuantity(balanceQuantity);
 											r.getData().setBalanceAmount(balanceAmount);
 											r.getData().setStockPrice(stockPrice);
-											stockGoodsClient.updateStock(r.getData());
+											r.getData().setTenantId(order.getTenantId());
+											boolean a = stockGoodsClient.updateStockYCP(r.getData());
+											System.out.println("第三步库存" + a);
 										} else {
 											StockGoods stockGoods = new StockGoods();
 											if ("CG".equals(selectOrder.getBillType())) {
@@ -232,7 +239,8 @@ public class TongLianPaymentController extends BladeController {
 												stockGoods.setBalanceQuantity(orderItems.getStorageInQuantity());
 												stockGoods.setBalanceAmount(stockGoods.getBalanceQuantity().multiply(orderItems.getPrice()));
 												stockGoods.setSurplusRouteQuantity(orderItems.getStorageInQuantity());
-												stockGoodsClient.saveStock(stockGoods);
+												stockGoods.setTenantId(order.getTenantId());
+												stockGoodsClient.saveStockYCP(stockGoods);
 											} else {
 												stockGoods.setGoodsId(orderItems.getItemId());
 												stockGoods.setStorageId(orderItems.getStorageId());
@@ -241,7 +249,8 @@ public class TongLianPaymentController extends BladeController {
 												stockGoods.setBalanceQuantity(new BigDecimal("0.00").subtract(orderItems.getStorageInQuantity()));
 												stockGoods.setBalanceAmount(new BigDecimal("0.00").subtract(stockGoods.getBalanceQuantity().multiply(orderItems.getPrice())));
 												stockGoods.setSurplusRouteQuantity(new BigDecimal("0.00").subtract(orderItems.getStorageInQuantity()));
-												stockGoodsClient.saveStock(stockGoods);
+												stockGoods.setTenantId(order.getTenantId());
+												stockGoodsClient.saveStockYCP(stockGoods);
 											}
 										}
 									}
@@ -255,14 +264,14 @@ public class TongLianPaymentController extends BladeController {
 							//账单支付处理
 							//获取所属公司中文名
 							if (selectOrder.getBelongToCorpId() != null) {
-								R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(selectOrder.getBelongToCorpId());
+								R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessageYCP(selectOrder.getBelongToCorpId(),order.getTenantId());
 								if (corpMessage.isSuccess() && corpMessage.getData() != null) {
 									selectOrder.setBelongToCorpName(corpMessage.getData().getCname());
 								}
 							}
 							//获取客户中文名
 							if (selectOrder.getCorpId() != null) {
-								R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(selectOrder.getCorpId());
+								R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessageYCP(selectOrder.getCorpId(),order.getTenantId());
 								if (corpMessage.isSuccess() && corpMessage.getData() != null) {
 									selectOrder.setCorpsName(corpMessage.getData().getCname());
 								}
@@ -303,7 +312,7 @@ public class TongLianPaymentController extends BladeController {
 							applyDTO.setUnit("条");
 							applyDTO.setRemarks(selectOrder.getOrderRemark());
 							//获取费用id
-							R<FeesDesc> fees = feesDescClient.getFeesByName("货款");
+							R<FeesDesc> fees = feesDescClient.getFeesByNameYCP("货款",order.getTenantId());
 							if (fees.isSuccess() && fees.getData() != null) {
 								applyDTO.setCostType(fees.getData().getId().toString());
 							}
@@ -321,6 +330,7 @@ public class TongLianPaymentController extends BladeController {
 							applyDTO.setPrice(price);
 							applyDTO.setQuantity(quantity);
 							applyDTO.setReceivedAmount(selectOrder.getCurrentAmount());
+							applyDTO.setTenantId(order.getTenantId());
 							if (ObjectUtils.isNotNull(selectOrder.getCurrentAmount())) {
 								applyDTO.setSettlementAmount(selectOrder.getSettlmentAmount().add(selectOrder.getCurrentAmount()));
 							}
@@ -335,7 +345,7 @@ public class TongLianPaymentController extends BladeController {
 								wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,修改单据已收账款失败");
 								wechatMark.setStatus(2);
 							}
-							orderDescClient.updateOrder(selectOrder);
+							orderDescClient.updateOrderYCP(selectOrder);
 
 							//生成账单
 							R paymentApply = financeClient.paymentApplyParts(applyDTO);
@@ -343,7 +353,7 @@ public class TongLianPaymentController extends BladeController {
 								wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,账单结算失败!原因:" + paymentApply.getMsg());
 								wechatMark.setStatus(2);
 							} else {
-								System.out.println("第步");
+								System.out.println("第步");
 							}
 						} else {
 							wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到收款信息,账单结算失败!");

+ 18 - 5
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java

@@ -13,6 +13,7 @@ import org.springblade.client.entity.FeesDesc;
 import org.springblade.client.feign.IFeesDescClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.finance.dto.ApplyDTO;
@@ -100,13 +101,25 @@ public class OrderDescClient implements IOrderDescClient {
 		return R.success("操作成功");
 	}
 
+
+	@Override
+	@PostMapping(UPDATE_ORDER_YCP)
+	@TenantIgnore
+	public R updateOrderYCP(Order order) {
+		if (order.getId() == null) {
+			throw new SecurityException("修改状态失败");
+		}
+		iOrderService.updateById(order);
+		return R.success("操作成功");
+	}
+
 	@Override
 	@PostMapping(GET_BY_ORDER_NO)
 	public Order getByOrder(Order order) {
 		LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		if (ObjectUtils.isNotNull(order.getTenantId())){
+		if (ObjectUtils.isNotNull(order.getTenantId())) {
 			orderLambdaQueryWrapper.eq(Order::getTenantId, order.getTenantId());
-		}else{
+		} else {
 			orderLambdaQueryWrapper.eq(Order::getTenantId, AuthUtil.getTenantId());
 		}
 		orderLambdaQueryWrapper.eq(Order::getIsDeleted, 0);
@@ -249,9 +262,9 @@ public class OrderDescClient implements IOrderDescClient {
 		if (ObjectUtils.isNull(order)) {
 			throw new SecurityException("未查到订单信息");
 		}
-		if (ObjectUtils.isNotNull(order.getCourierNumber())){
-			order.setStatus(4);
-		}else{
+		if (ObjectUtils.isNotNull(order.getCourierNumber())) {
+			order.setStatus(5);
+		} else {
 			order.setStatus(3);
 		}
 		iOrderService.updateById(order);

+ 28 - 11
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderItemsClient.java

@@ -5,11 +5,11 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.deliver.goods.enums.DeliveryEnum;
@@ -118,10 +118,10 @@ public class OrderItemsClient implements IOrderItemsClient {
 
 	@Override
 	@GetMapping(LIST_BY_ITEM_ID)
-	public R<List<OrderItems>> listByItemId(Long itemId,Long storageId) {
+	public R<List<OrderItems>> listByItemId(Long itemId, Long storageId) {
 		LambdaQueryWrapper<OrderItems> orderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		orderItemsLambdaQueryWrapper.eq(ObjectUtils.isNotNull(itemId),OrderItems::getItemId, itemId)
-			.eq(ObjectUtils.isNotNull(storageId),OrderItems::getStorageId, storageId)
+		orderItemsLambdaQueryWrapper.eq(ObjectUtils.isNotNull(itemId), OrderItems::getItemId, itemId)
+			.eq(ObjectUtils.isNotNull(storageId), OrderItems::getStorageId, storageId)
 			.eq(OrderItems::getIsDeleted, 0);
 		List<OrderItems> list = orderItemsService.list(orderItemsLambdaQueryWrapper);
 		return R.data(list);
@@ -164,15 +164,16 @@ public class OrderItemsClient implements IOrderItemsClient {
 
 	/**
 	 * 经销商获取历史采购或者销售价格
-	 * @param itemId 商品id
-	 * @param typeId 是否获取最新价格 为空是 不为空为否
-	 * @param billType 采购价格或者销售价格
+	 *
+	 * @param itemId    商品id
+	 * @param typeId    是否获取最新价格 为空是 不为空为否
+	 * @param billType  采购价格或者销售价格
 	 * @param tradeType 贸易类型 国内 进口 出口 经销商
 	 * @return
 	 */
 	@Override
 	public List<Map<String, Object>> historyPrice(Long itemId, Long typeId, String billType, String tradeType) {
-		return orderItemsService.historyPrice(itemId,typeId,billType,tradeType);
+		return orderItemsService.historyPrice(itemId, typeId, billType, tradeType);
 	}
 
 	/**
@@ -180,16 +181,32 @@ public class OrderItemsClient implements IOrderItemsClient {
 	 */
 	@Override
 	public List<Map<String, Object>> lotNo(Long itemId, Long storageId, String tradeType) {
-		if (itemId == null || storageId == null || StringUtil.isBlank(tradeType)){
+		if (itemId == null || storageId == null || StringUtil.isBlank(tradeType)) {
 			throw new SecurityException("缺少必要的参数");
 		}
-		return orderItemsService.lotNo(itemId,storageId,tradeType);
+		return orderItemsService.lotNo(itemId, storageId, tradeType);
 	}
 
 	@Override
 	public R<List<OrderItems>> selectList(Long orderId) {
 		LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getTenantId, AuthUtil.getTenantId()).eq(OrderItems::getPid, orderId);
+		lambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0);
+		lambdaQueryWrapper.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
+		lambdaQueryWrapper.eq(OrderItems::getPid, orderId);
+		return R.data(orderItemsService.list(lambdaQueryWrapper));
+	}
+
+	@Override
+	@TenantIgnore
+	public R<List<OrderItems>> selectListYCP(Long orderId, String tenantId) {
+		LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0);
+		if (ObjectUtils.isNotNull(tenantId)) {
+			lambdaQueryWrapper.eq(OrderItems::getTenantId, tenantId);
+		} else {
+			lambdaQueryWrapper.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
+		}
+		lambdaQueryWrapper.eq(OrderItems::getPid, orderId);
 		return R.data(orderItemsService.list(lambdaQueryWrapper));
 	}
 }

+ 31 - 2
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -5729,8 +5729,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						int count = baseMapper.selectCount(new LambdaQueryWrapper<Order>().eq(Order::getIsDeleted, 0)
 							.eq(Order::getTenantId, AuthUtil.getTenantId())
 							.eq(ObjectUtils.isNotNull(corpId), Order::getCorpId, corpId)
+							.eq(Order::getTradeType, "YPJ")
 							.apply("find_in_set(bill_type,'XSTH')")
-							.in(Order::getStatus, dictBiz.getDictKey()));
+							.eq(Order::getStatus, dictBiz.getDictKey()));
+						map.put("count", count);
+					} else if ("1".equals(dictBiz.getDictKey()) || "2".equals(dictBiz.getDictKey())) {
+						int count = baseMapper.selectCount(new LambdaQueryWrapper<Order>().eq(Order::getIsDeleted, 0)
+							.eq(Order::getTenantId, AuthUtil.getTenantId())
+							.eq(ObjectUtils.isNotNull(corpId), Order::getCorpId, corpId)
+							.eq(Order::getTradeType, "YPJ")
+							.apply("find_in_set(bill_type,'XS')")
+							.eq(Order::getActualPaymentStatus, dictBiz.getDictKey()));
 						map.put("count", count);
 					} else {
 						map.put("count", count(Integer.parseInt(dictBiz.getDictKey()), corpId));
@@ -5739,9 +5748,29 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					if ("13".equals(dictBiz.getDictKey())) {
 						int count = baseMapper.selectCount(new LambdaQueryWrapper<Order>().eq(Order::getIsDeleted, 0)
 							.eq(Order::getTenantId, AuthUtil.getTenantId())
-							.eq(ObjectUtils.isNotNull(corpId), Order::getCorpId, corpId)
+							.eq(Order::getTradeType, "YPJ")
+							.eq(Order::getCorpId, corpId)
+							.apply("find_in_set(bill_type,'XSTH,XS')")
 							.in(Order::getStatus, list.stream().map(DictBiz::getDictKey).collect(Collectors.toList())));
 						map.put("count", count);
+					} else if ("1".equals(dictBiz.getDictKey())) {
+						int count = baseMapper.selectCount(new LambdaQueryWrapper<Order>().eq(Order::getIsDeleted, 0)
+							.eq(Order::getTenantId, AuthUtil.getTenantId())
+							.eq(Order::getTradeType, "YPJ")
+							.eq(Order::getCorpId, corpId)
+							.eq(Order::getStatus, 0)
+							.apply("find_in_set(bill_type,'XS')")
+							.eq(Order::getActualPaymentStatus, dictBiz.getDictKey()));
+						map.put("count", count);
+					} else if ("2".equals(dictBiz.getDictKey())) {
+						int count = baseMapper.selectCount(new LambdaQueryWrapper<Order>().eq(Order::getIsDeleted, 0)
+							.eq(Order::getTenantId, AuthUtil.getTenantId())
+							.eq(Order::getTradeType, "YPJ")
+							.eq(Order::getCorpId, corpId)
+							.eq(Order::getStatus, 3)
+							.apply("find_in_set(bill_type,'XS')")
+							.eq(Order::getActualPaymentStatus, dictBiz.getDictKey()));
+						map.put("count", count);
 					} else {
 						map.put("count", count(Integer.parseInt(dictBiz.getDictKey()), corpId));
 					}

+ 3 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/wing/accessories/WebpageController.java

@@ -59,8 +59,10 @@ public class WebpageController {
 		if ("线上".equals(order.getOrderSource())) {
 			if (ObjectUtils.isNotNull(order.getStatus()) && 1 == order.getStatus()) {
 				lambdaQueryWrapper.eq(Func.isNotEmpty(order.getActualPaymentStatus()), Order::getActualPaymentStatus, order.getStatus());//微信实际支付状态
+				lambdaQueryWrapper.apply("find_in_set(bill_type,'XS')");
 			} else if (ObjectUtils.isNotNull(order.getStatus()) && 2 == order.getStatus()) {
 				lambdaQueryWrapper.eq(Func.isNotEmpty(order.getActualPaymentStatus()), Order::getActualPaymentStatus, order.getStatus());//微信实际支付状态
+				lambdaQueryWrapper.apply("find_in_set(bill_type,'XS')");
 				lambdaQueryWrapper.eq(Order::getStatus, 3);//微信实际支付状态
 			} else if (ObjectUtils.isNotNull(order.getStatus()) && 13 == order.getStatus()) {
 				lambdaQueryWrapper.in(Order::getStatus, 7, 8, 9, 10, 11, 12);
@@ -83,6 +85,7 @@ public class WebpageController {
 		} else {
 			if (ObjectUtils.isNotNull(order.getStatus()) && (1 == order.getStatus() || 2 == order.getStatus())) {
 				lambdaQueryWrapper.eq(Func.isNotEmpty(order.getActualPaymentStatus()), Order::getActualPaymentStatus, order.getStatus());//微信实际支付状态
+				lambdaQueryWrapper.apply("find_in_set(bill_type,'XS')");
 			} else if (ObjectUtils.isNotNull(order.getStatus()) && (8 == order.getStatus() || 9 == order.getStatus() || 10 == order.getStatus() || 11 == order.getStatus())) {
 				lambdaQueryWrapper.in(Order::getStatus, order.getStatus());
 				lambdaQueryWrapper.apply("find_in_set(bill_type,'XSTH')");

+ 38 - 25
blade-service/blade-stock/src/main/java/org/springblade/stock/controller/StockGoodsController.java

@@ -29,6 +29,7 @@ import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
 import org.springblade.client.entity.CorpsAttn;
 import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.entity.GoodsType;
 import org.springblade.client.entity.StorageDesc;
 import org.springblade.client.feign.ICorpsAttnClient;
 import org.springblade.client.feign.ICorpsDescClient;
@@ -64,6 +65,7 @@ import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 库存账 控制器
@@ -334,8 +336,8 @@ public class StockGoodsController extends BladeController {
 			String[] arrs = ids.split(",");
 			for (String arr : arrs) {
 				StockGoods stockGoods = stockGoodsService.getById(Long.parseLong(arr));
-				if (ObjectUtils.isNotNull(stockGoods)){
-					if (ObjectUtils.isNotNull(stockGoods.getInQuantity()) || ObjectUtils.isNotNull(stockGoods.getOutQuantity())){
+				if (ObjectUtils.isNotNull(stockGoods)) {
+					if (ObjectUtils.isNotNull(stockGoods.getInQuantity()) || ObjectUtils.isNotNull(stockGoods.getOutQuantity())) {
 						throw new RuntimeException("删除失败,该库存已有单据信息");
 					}
 				}
@@ -429,12 +431,10 @@ public class StockGoodsController extends BladeController {
 	 */
 	@GetMapping("/app-stockPartsPage")
 	public R<IPage<AppStockPartsVO>> stockPartsPage(HttpServletRequest request, AppStockPartsVO appStockPartsVO, Query query) {
-
 		System.out.println("Blade-Auth=" + request.getHeader("Blade-Auth"));
 		if (ObjectUtils.isNull(request.getHeader("Blade-Auth"))) {
 			// 获取租户信息
 			R<Tenant> tenant = sysClient.getTenantByAppId(request.getHeader("appId"));
-//			R<Tenant> tenant = sysClient.getTenantByAppId("wx64d1f6c9aa9c92e6");
 			if (tenant.isSuccess() && ObjectUtils.isNotNull(tenant.getData())) {
 				appStockPartsVO.setTenantId(tenant.getData().getTenantId());
 			} else {
@@ -446,26 +446,39 @@ public class StockGoodsController extends BladeController {
 		if (appStockPartsVO.getLabel() != null && appStockPartsVO.getLabel().length > 0) {
 			appStockPartsVO.setLabels(StringUtil.join(appStockPartsVO.getLabel(), ","));
 		}
-		IPage<AppStockPartsVO> pages = stockGoodsService.selectAppStockPartsPage(Condition.getPage(query), appStockPartsVO);
-		List<AppStockPartsVO> records = pages.getRecords();
-		if (CollectionUtils.isNotEmpty(records)) {
-			String shoppingMall = "";
-			if (AuthUtil.getUserRole().equals("客户")) {
-				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId());
-				if (ObjectUtils.isNull(corpsAttn)) {
+		if (ObjectUtils.isNotNull(appStockPartsVO.getGoodsTypeId())) {
+			List<GoodsType> goodsTypeList = goodsDescClient.getGoodsTypeId(appStockPartsVO.getGoodsTypeId());
+			if (ObjectUtils.isNotNull(goodsTypeList) && goodsTypeList.size() > 0) {
+				List<Long> idList = goodsTypeList.stream().map(GoodsType::getId).distinct().collect(Collectors.toList());
+				StringBuilder ids = new StringBuilder();
+				for (Long id : idList) {
+					ids.append(id).append(",");
+				}
+				ids.append(appStockPartsVO.getGoodsTypeId());
+				appStockPartsVO.setGoodsTypeId(ids.toString());
+			}
+		}
+		String shoppingMall = "";
+		if (AuthUtil.getUserRole().equals("客户")) {
+			CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId());
+			if (ObjectUtils.isNull(corpsAttn)) {
+				throw new RuntimeException("未查到用户信息");
+			} else {
+				CorpsDesc corpsDesc = corpsDescClient.getCorpId(corpsAttn.getPid());
+				if (ObjectUtils.isNull(corpsDesc)) {
 					throw new RuntimeException("未查到用户信息");
 				} else {
-					CorpsDesc corpsDesc = corpsDescClient.getCorpId(corpsAttn.getPid());
-					if (ObjectUtils.isNull(corpsDesc)) {
-						throw new RuntimeException("未查到用户信息");
-					} else {
-						shoppingMall = corpsDesc.getShoppingMall();
-					}
+					shoppingMall = corpsDesc.getShoppingMall();
 				}
-			} else {
-				shoppingMall = "游客";
 			}
-			String finalShoppingMall = shoppingMall;
+		} else {
+			shoppingMall = "游客";
+		}
+		appStockPartsVO.setUserType(shoppingMall);
+		String finalShoppingMall = shoppingMall;
+		IPage<AppStockPartsVO> pages = stockGoodsService.selectAppStockPartsPage(Condition.getPage(query), appStockPartsVO);
+		List<AppStockPartsVO> records = pages.getRecords();
+		if (CollectionUtils.isNotEmpty(records)) {
 			records.forEach(item -> {
 				//获取商品信息
 				R<GoodsDescVO> goodsMessage = goodsDescClient.selectGoodsMessage(item.getGoodsId());
@@ -483,15 +496,15 @@ public class StockGoodsController extends BladeController {
 					}
 					item.setUnit(goodsMessage.getData().getUnit());
 					item.setUrl(goodsMessage.getData().getUrl());
-					if ("零售价1".equals(finalShoppingMall) || "游客".equals(finalShoppingMall)) {
+					if ("零售价".equals(finalShoppingMall) || "游客".equals(finalShoppingMall)) {
 						item.setSalesPrice(goodsMessage.getData().getStandardPrice());
-					} else if ("零售价2".equals(finalShoppingMall)) {
+					} else if ("售价1".equals(finalShoppingMall)) {
 						item.setSalesPrice(goodsMessage.getData().getWholesalePrice());
-					} else if ("零售价3".equals(finalShoppingMall)) {
+					} else if ("售价2".equals(finalShoppingMall)) {
 						item.setSalesPrice(goodsMessage.getData().getRepairDepotPrice());
-					} else if ("零售价4".equals(finalShoppingMall)) {
+					} else if ("售价3".equals(finalShoppingMall)) {
 						item.setSalesPrice(goodsMessage.getData().getStorePrice());
-					} else if ("零售价5".equals(finalShoppingMall)) {
+					} else if ("售价4".equals(finalShoppingMall)) {
 						item.setSalesPrice(goodsMessage.getData().getPrice());
 					} else if ("特价".equals(finalShoppingMall)) {
 						item.setSalesPrice(goodsMessage.getData().getSpecialOffer());

+ 43 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/feign/StockGoodsClient.java

@@ -15,6 +15,7 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
@@ -157,6 +158,13 @@ public class StockGoodsClient implements IStockGoodsClient {
 		return R.data(stockGoodsService.selectStockParts(corpId, storageId, goodId, itemType, lotNo, cntrNo, billNo, contractNumber, tradeType));
 	}
 
+	@Override
+	@GetMapping(SELECT_STOCK_PARTS_YCP)
+	@TenantIgnore
+	public R<StockGoodsVO> selectStockPartsYCP(Long corpId, Long storageId, Long goodId, String itemType, String lotNo, String cntrNo, String billNo, String contractNumber, String tradeType,String tenantId) {
+		return R.data(stockGoodsService.selectStockPartsYCP(corpId, storageId, goodId, itemType, lotNo, cntrNo, billNo, contractNumber, tradeType,tenantId));
+	}
+
 	/**
 	 * 新增库存总账
 	 *
@@ -170,6 +178,19 @@ public class StockGoodsClient implements IStockGoodsClient {
 	}
 
 	/**
+	 * 新增库存总账
+	 *
+	 * @param stockGoods
+	 * @return
+	 */
+	@Override
+	@PostMapping(SAVE_STOCK_YCP)
+	@TenantIgnore
+	public R saveStockYCP(StockGoods stockGoods) {
+		return R.status(stockGoodsService.saveStock(stockGoods));
+	}
+
+	/**
 	 * 订单商品明细获取库存
 	 *
 	 * @param stockGoods
@@ -210,6 +231,19 @@ public class StockGoodsClient implements IStockGoodsClient {
 	public boolean updateStock(StockGoods stockGoods) {
 		return stockGoodsService.updateById(stockGoods);
 	}
+
+	/**
+	 * 修改库存总账
+	 *
+	 * @param stockGoods
+	 * @return
+	 */
+	@Override
+	@PostMapping(UPDATE_STOCK_YCP)
+	@TenantIgnore
+	public boolean updateStockYCP(StockGoods stockGoods) {
+		return stockGoodsService.updateById(stockGoods);
+	}
 	@Override
 	@PostMapping(UPDATE_STOCK_GOODS)
 	public int updateStockGoods(StockGoods stockGoods) {
@@ -334,6 +368,15 @@ public class StockGoodsClient implements IStockGoodsClient {
 		return stockGoodsService.list(lambdaQueryWrapper);
 	}
 
+	@Override
+	public List<StockGoods> selectListByGoodsId(Long id) {
+		LambdaQueryWrapper<StockGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(StockGoods::getIsDeleted, 0);
+		lambdaQueryWrapper.eq(StockGoods::getTenantId, AuthUtil.getTenantId());
+		lambdaQueryWrapper.eq(StockGoods::getGoodsId, id);
+		return stockGoodsService.list(lambdaQueryWrapper);
+	}
+
 	/**
 	 * 将Object转换成List类型
 	 *

+ 65 - 21
blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.xml

@@ -145,6 +145,7 @@
         t3.purchase_price AS purchasePrice,
         t3.label AS labels,
         t3.upper_frame AS upperFrame,
+        t3.sales_volumes AS salesVolumes,
         t4.cname AS goodsType,
         t5.url AS url,
         t1.remarks AS remarks,
@@ -172,8 +173,8 @@
             <if test="stock.brand != null and stock.brand != ''">
                 and t3.brand = #{stock.brand}
             </if>
-            <if test="stock.goodsTypeId != null">
-                and t4.id = #{stock.goodsTypeId}
+            <if test="stock.goodsTypeId != null and stock.goodsTypeId != ''">
+                and find_in_set(t4.id,#{stock.goodsTypeId})
             </if>
             <if test="stock.labels != null and stock.labels != ''">
                 and find_in_set(#{stock.labels},t3.label)
@@ -202,35 +203,77 @@
             <if test="stock.date != null and stock.date != '' and stock.date == 2">
                 and date_format(t1.in_date, '%Y %m') = date_format(DATE_SUB(curdate(), INTERVAL 0 MONTH),'%Y %m')
             </if>
-            <if test="stock.sort != null and stock.sort != '' and stock.sort == 0">
-                <if test="stock.goodsSort != null and stock.goodsSort != ''">
-                    ORDER BY t3.cname
+            <if test='stock.sort != null and stock.sort != "" and stock.sort == "0"'>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.sortType == "1"'>
+                    ORDER BY t3.cname ASC
                 </if>
-                <if test="stock.balanceSort != null and stock.balanceSort != ''">
-                    ORDER BY t1.surplus_route_quantity
+                <if test='stock.sortType != null and stock.sortType != "" and stock.sortType == "3"'>
+                    ORDER BY t1.surplus_route_quantity ASC
                 </if>
-                <if test="stock.lowerLimitSort != null and stock.lowerLimitSort != ''">
-                    ORDER BY t1.lower_limit
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "零售价" and stock.sortType == "2"'>
+                    ORDER BY t3.standard_price ASC
                 </if>
-                <if test="stock.stockPriceSort != null and stock.stockPriceSort != ''">
-                    ORDER BY t1.stock_price
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "售价1" and stock.sortType == "2"'>
+                    ORDER BY t3.wholesale_price ASC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "售价2" and stock.sortType == "2"'>
+                    ORDER BY t3.repair_depot_price ASC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "售价3" and stock.sortType == "2"'>
+                    ORDER BY t3.store_price ASC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "售价4" and stock.sortType == "2"'>
+                    ORDER BY t3.price ASC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "特价" and stock.sortType == "2"'>
+                    ORDER BY t3.special_offer ASC
                 </if>
             </if>
-            <if test="stock.sort != null and stock.sort != '' and stock.sort == 1">
-                <if test="stock.goodsSort != null and stock.goodsSort != ''">
-                    ORDER BY t3.cname desc
+            <if test='stock.sort != null and stock.sort != "" and stock.sort == "1"'>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.sortType == "1"'>
+                    ORDER BY t3.cname DESC
                 </if>
-                <if test="stock.balanceSort != null and stock.balanceSort != ''">
-                    ORDER BY t1.surplus_route_quantity desc
+                <if test='stock.sortType != null and stock.sortType != "" and stock.sortType == "3"'>
+                    ORDER BY t1.surplus_route_quantity DESC
                 </if>
-                <if test="stock.lowerLimitSort != null and stock.lowerLimitSort != ''">
-                    ORDER BY t1.lower_limit desc
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "零售价" and stock.sortType == "2"'>
+                    ORDER BY t3.standard_price DESC
                 </if>
-                <if test="stock.stockPriceSort != null and stock.stockPriceSort != ''">
-                    ORDER BY t1.stock_price desc
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "售价1" and stock.sortType == "2"'>
+                    ORDER BY t3.wholesale_price DESC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "售价2" and stock.sortType == "2"'>
+                    ORDER BY t3.repair_depot_price DESC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "售价3" and stock.sortType == "2"'>
+                    ORDER BY t3.store_price DESC
                 </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "售价4" and stock.sortType == "2"'>
+                    ORDER BY t3.price DESC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "特价" and stock.sortType == "2"'>
+                    ORDER BY t3.special_offer DESC
+                </if>
+            </if>
+            <if test="stock.sort == null and stock.userType == '零售价'">
+                ORDER BY t3.standard_price ASC
+            </if>
+            <if test="stock.sort == null and stock.userType == '售价1'">
+                ORDER BY t3.wholesale_price ASC
+            </if>
+            <if test="stock.sort == null and stock.userType == '售价2'">
+                ORDER BY t3.repair_depot_price ASC
+            </if>
+            <if test="stock.sort == null and stock.userType == '售价3'">
+                ORDER BY t3.store_price ASC
+            </if>
+            <if test="stock.sort == null and stock.userType == '售价4'">
+                ORDER BY t3.price ASC
+            </if>
+            <if test="stock.sort == null and stock.userType == '特价'">
+                ORDER BY t3.special_offer ASC
             </if>
-            <if test="stock.sort == null">
+            <if test="stock.sort == null and stock.userType == ''">
                 ORDER BY t1.create_time desc
             </if>
         </where>
@@ -333,6 +376,7 @@
         t3.purchase_price AS purchasePrice,
         t3.label AS labels,
         t3.upper_frame AS upperFrame,
+        t3.sales_volumes AS salesVolumes,
         t4.cname AS goodsType,
         t5.url AS url,
         t1.remarks AS remarks,

+ 1 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/service/IStockGoodsService.java

@@ -76,6 +76,7 @@ public interface IStockGoodsService extends IService<StockGoods> {
 	 * @return
 	 */
 	StockGoodsVO selectStockParts(Long corpId, Long storageId, Long goodId, String itemType, String lotNo, String cntrNo, String billNo, String contractNumber, String tradeType);
+	StockGoodsVO selectStockPartsYCP(Long corpId, Long storageId, Long goodId, String itemType, String lotNo, String cntrNo, String billNo, String contractNumber, String tradeType,String tenantId);
 
 	/**
 	 * 新增库存总账

+ 28 - 4
blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
@@ -33,6 +34,7 @@ import org.springblade.client.feign.IStorageClient;
 import org.springblade.client.vo.GoodsDescVO;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
@@ -146,6 +148,29 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 		return BeanUtil.copy(stockGoods, StockGoodsVO.class);
 	}
 
+	@Override
+	@TenantIgnore
+	public StockGoodsVO selectStockPartsYCP(Long corpId, Long storageId, Long goodId, String itemType, String lotNo, String cntrNo, String billNo, String contractNumber, String tradeType, String tenantId) {
+		LambdaQueryWrapper<StockGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(Func.isNotEmpty(corpId), StockGoods::getCorpId, corpId);//客户id
+		lambdaQueryWrapper.eq(Func.isNotEmpty(storageId), StockGoods::getStorageId, storageId);//仓库id
+		lambdaQueryWrapper.eq(Func.isNotEmpty(goodId), StockGoods::getGoodsId, goodId);//商品id
+		lambdaQueryWrapper.eq(Func.isNotEmpty(itemType), StockGoods::getItemType, itemType);//产品型号
+		lambdaQueryWrapper.eq(Func.isNotEmpty(lotNo), StockGoods::getLotNo, lotNo);//批次号
+		if (ObjectUtils.isNotNull(tenantId)) {
+			lambdaQueryWrapper.eq(StockGoods::getTenantId, tenantId);//租户
+		} else {
+			lambdaQueryWrapper.eq(StockGoods::getTenantId, SecureUtil.getTenantId());//租户
+		}
+		lambdaQueryWrapper.eq(Func.isNotEmpty(tradeType), StockGoods::getTradeType, tradeType);
+		lambdaQueryWrapper.eq(Func.isNotEmpty(cntrNo), StockGoods::getCntrNo, cntrNo);//收货单 箱号
+		lambdaQueryWrapper.eq(Func.isNotEmpty(billNo), StockGoods::getBillNo, billNo);//收货单 提单号
+		lambdaQueryWrapper.eq(Func.isNotEmpty(contractNumber), StockGoods::getContractNumber, contractNumber);//收货单 合同号
+
+		StockGoods stockGoods = baseMapper.selectOne(lambdaQueryWrapper);
+		return BeanUtil.copy(stockGoods, StockGoodsVO.class);
+	}
+
 	/**
 	 * 新增库存账接口
 	 *
@@ -328,8 +353,8 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 	}
 
 	@Override
-	public IPage<StockGoods> groupByStock(IPage<StockGoods> iPage, String tenantId, String contractNumber, String billNo, Long goodId, String createStartTime, String createEndTime,String orderType) {
-		return baseMapper.groupByStock(iPage, AuthUtil.getTenantId(), contractNumber, billNo, goodId, createStartTime, createEndTime,orderType);
+	public IPage<StockGoods> groupByStock(IPage<StockGoods> iPage, String tenantId, String contractNumber, String billNo, Long goodId, String createStartTime, String createEndTime, String orderType) {
+		return baseMapper.groupByStock(iPage, AuthUtil.getTenantId(), contractNumber, billNo, goodId, createStartTime, createEndTime, orderType);
 	}
 
 	@Override
@@ -340,11 +365,10 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 
 	@Override
 	public BigDecimal selectStockNumber(String tenantId, Long goodsId) {
-		return baseMapper.selectStockNumber(tenantId,goodsId);
+		return baseMapper.selectStockNumber(tenantId, goodsId);
 	}
 
 	/**
-	 *
 	 * @param page
 	 * @param appStockPartsVO
 	 * @return

+ 32 - 17
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -2617,16 +2617,20 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 	public void paymentApplyParts(ApplyDTO dto) {
 		Acc acc = new Acc();
 		LambdaQueryWrapper<Acc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(Acc::getIsDeleted, 0)
-			.eq(Acc::getTenantId, AuthUtil.getTenantId())
-			.eq(Acc::getSrcParentId, dto.getSrcParentId())
+		lambdaQueryWrapper.eq(Acc::getIsDeleted, 0);
+		if (ObjectUtils.isNotNull(dto.getTenantId())) {
+			lambdaQueryWrapper.eq(Acc::getTenantId, dto.getTenantId());
+		} else {
+			lambdaQueryWrapper.eq(Acc::getTenantId, AuthUtil.getTenantId());
+		}
+		lambdaQueryWrapper.eq(Acc::getSrcParentId, dto.getSrcParentId())
 			.eq(Acc::getSrcSysno, dto.getSrcSysno());
 		Acc selectAcc = accMapper.selectOne(lambdaQueryWrapper);
 		if (ObjectUtils.isNull(selectAcc)) {
 			BeanUtils.copyProperties(dto, acc);
 			acc.setAccDate(new Date());
 			acc.setCreateTime(new Date());
-			acc.setCreateUser(AuthUtil.getUserId());
+//			acc.setCreateUser(AuthUtil.getUserId());
 			accMapper.insert(acc);
 		} else {
 			BigDecimal s = new BigDecimal("0.00");
@@ -2663,15 +2667,19 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 						model.setSrcBillId(acc.getSrcId());
 						model.setItemType(acc.getItemType());
 						model.setSysNo(String.valueOf(System.currentTimeMillis()));
-						model.setTenantId(AuthUtil.getTenantId());
-						model.setCreateTime(new Date());
-						model.setCreateUser(AuthUtil.getUserId());
-						String[] arr = AuthUtil.getDeptId().split(",");
-						if (arr.length > 0) {
-							model.setCreateDept(Long.valueOf(AuthUtil.getDeptId().split(",")[0]));
+						if (ObjectUtils.isNotNull(dto.getTenantId())) {
+							model.setTenantId(dto.getTenantId());
 						} else {
-							model.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+							model.setTenantId(AuthUtil.getTenantId());
+							model.setCreateUser(AuthUtil.getUserId());
+							String[] arr = AuthUtil.getDeptId().split(",");
+							if (arr.length > 0) {
+								model.setCreateDept(Long.valueOf(AuthUtil.getDeptId().split(",")[0]));
+							} else {
+								model.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+							}
 						}
+						model.setCreateTime(new Date());
 						model.setAccId(acc.getId());
 						model.setAccount(settlement.getAccount());
 						model.setOverPayment(settlement.getOverPayment());
@@ -2699,10 +2707,15 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 						items.setTradeType(acc.getTradeType());
 						items.setAccId(id);
 						items.setPid(model.getId());
-						items.setTenantId(AuthUtil.getTenantId());
+						if (ObjectUtils.isNotNull(dto.getTenantId())) {
+							items.setTenantId(dto.getTenantId());
+						} else {
+							items.setTenantId(AuthUtil.getTenantId());
+							items.setCreateUser(AuthUtil.getUserId());
+							items.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+						}
 						items.setCreateTime(new Date());
-						items.setCreateUser(AuthUtil.getUserId());
-						items.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+
 						items.setTradeType(acc.getTradeType());
 						itemsMapper.insert(items);
 
@@ -2710,7 +2723,9 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 					acc.setSettlementAmount(s);
 					acc.setId(id);
 					acc.setUpdateTime(new Date());
-					acc.setUpdateUser(AuthUtil.getUserId());
+					if (ObjectUtils.isNull(dto.getTenantId())) {
+						acc.setUpdateUser(AuthUtil.getUserId());
+					}
 					accMapper.updateById(acc);
 				}
 			}
@@ -3208,9 +3223,9 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 
 	@Override
 	public boolean removeSettlementHy(List<Long> idList) {
-		for (Long id:idList) {
+		for (Long id : idList) {
 			Settlement settlement = baseMapper.selectById(id);
-			if (ObjectUtils.isNull(settlement) || "结算完成".equals(settlement.getFinanceStatus())){
+			if (ObjectUtils.isNull(settlement) || "结算完成".equals(settlement.getFinanceStatus())) {
 				throw new SecurityException("已结算,删除失败");
 			}
 		}