Pārlūkot izejas kodu

2023年6月25日18:05:19

纪新园 2 gadi atpakaļ
vecāks
revīzija
7445ce97b9
22 mainītis faili ar 174 papildinājumiem un 55 dzēšanām
  1. 6 0
      blade-service-api/blade-payment-api/src/main/java/org/springblade/pay/tonglianPayment/entity/WechatMark.java
  2. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjGoodsDesc.java
  3. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrder.java
  4. 12 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjStockDesc.java
  5. 11 1
      blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java
  6. 4 3
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/WechatMarkController.java
  7. 2 1
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/feign/PaymentClient.java
  8. 1 0
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java
  9. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/accountManagement/service/impl/AccountManagementServiceImpl.java
  10. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/service/impl/BrandDescServiceImpl.java
  11. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java
  12. 13 9
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java
  13. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/impl/GoodsDescServiceImpl.java
  14. 7 7
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java
  15. 11 11
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  16. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/controller/ProductLaunchController.java
  17. 3 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/service/impl/ProductLaunchServiceImpl.java
  18. 18 11
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java
  19. 13 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java
  20. 22 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/stock/controller/StockDescController.java
  21. 4 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/stock/mapper/StockDescMapper.xml
  22. 30 6
      blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java

+ 6 - 0
blade-service-api/blade-payment-api/src/main/java/org/springblade/pay/tonglianPayment/entity/WechatMark.java

@@ -87,6 +87,12 @@ public class WechatMark implements Serializable {
 	 */
 	@ApiModelProperty(value = "业务来源单号")
 	private String srcBillNo;
+
+	/**
+	 * 业务来源单号(主)
+	 */
+	@ApiModelProperty(value = "业务来源单号(主)")
+	private String billNo;
 	/**
 	 * 流水号
 	 */

+ 6 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjGoodsDesc.java

@@ -234,4 +234,10 @@ public class PjGoodsDesc implements Serializable {
 	@TableField(exist = false)
 	private BigDecimal price;
 
+	/**
+	 * 库存
+	 */
+	@TableField(exist = false)
+	private BigDecimal inventory;
+
 }

+ 6 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrder.java

@@ -376,6 +376,12 @@ public class PjOrder implements Serializable {
 	@ApiModelProperty(value = "是否已生成任务")
 	private String generateTask;
 
+	/**
+	 * 是否异地
+	 */
+	@ApiModelProperty(value = "是否异地")
+	private Integer billType;
+
 	//小程序检索
 	@TableField(exist = false)
 	private String retrieval;

+ 12 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjStockDesc.java

@@ -209,7 +209,19 @@ public class PjStockDesc implements Serializable {
 	@ApiModelProperty(value = "库存预警")
 	private Integer inventoryAlert;
 
+	/**
+	 * 版本
+	 */
+	@ApiModelProperty(value = "版本")
+	private String version;
+
 	@TableField(exist = false)
 	private List<Long> goodsIds;
 
+	/**
+	 * 库存是否为零
+	 */
+	@TableField(exist = false)
+	private String whether;
+
 }

+ 11 - 1
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java

@@ -59,6 +59,7 @@ public interface IUserClient {
 	String LOGIN_BY_ACCOUNT = API_PREFIX + "/loginByAccount";
 	String UPDATE_OPEN_ID = API_PREFIX + "/updateOpenId";
 	String SELECT_USER_BY_NAMES = API_PREFIX + "/selectUserByNames";
+	String GET_USER_BY_ROLE = API_PREFIX + "/getUserByRole";
 
 	@GetMapping(LIST_USER_BY_ROLE_ID)
 	R<List<User>> listUserByRoleId(@RequestParam("roleId") Long roleId);
@@ -73,6 +74,15 @@ public interface IUserClient {
 	List<User> userInfoByName(@RequestParam("userName") String userName, @RequestParam("tenantId") String tenantId);
 
 	/**
+	 * 获取用户信息(业务员)
+	 *
+	 * @param
+	 * @return
+	 */
+	@GetMapping(GET_USER_BY_ROLE)
+	List<User> getUserByRole();
+
+	/**
 	 * 根据修改人或创建人获取用户信息
 	 *
 	 * @param userIds
@@ -204,5 +214,5 @@ public interface IUserClient {
 	);
 
 	@GetMapping(SELECT_USER_BY_NAMES)
-    String selectUserByNames(@RequestParam(value = "adminProfilesName", required = false) String adminProfilesName);
+	String selectUserByNames(@RequestParam(value = "adminProfilesName", required = false) String adminProfilesName);
 }

+ 4 - 3
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/WechatMarkController.java

@@ -75,9 +75,10 @@ public class WechatMarkController extends BladeController {
 			.eq(ObjectUtils.isNotNull(wechatMark.getType()), WechatMark::getType, wechatMark.getType())
 			.like(ObjectUtils.isNotNull(wechatMark.getSerialNumber()), WechatMark::getSerialNumber, wechatMark.getSerialNumber())
 			.eq(ObjectUtils.isNotNull(wechatMark.getStatus()), WechatMark::getStatus, wechatMark.getStatus());
-		if ("883868".equals(AuthUtil.getTenantId())){
-			lambdaQueryWrapper.like(WechatMark::getSrcBillNo, wechatMark.getSrcBillNo());
-		}else{
+		if ("883868".equals(AuthUtil.getTenantId())) {
+			lambdaQueryWrapper.and(ObjectUtils.isNotNull(wechatMark.getSrcBillNo()), i -> i.like(WechatMark::getSrcBillNo, wechatMark.getSrcBillNo())
+				.or().like(WechatMark::getBillNo, wechatMark.getSrcBillNo()));
+		} else {
 			lambdaQueryWrapper.like(ObjectUtils.isNotNull(wechatMark.getSrcBillNo()), WechatMark::getSrcBillNo, wechatMark.getSrcBillNo());
 		}
 		if (ObjectUtils.isNotNull(wechatMark.getCreateTimeList()) && wechatMark.getCreateTimeList().size() > 0) {

+ 2 - 1
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/feign/PaymentClient.java

@@ -102,7 +102,8 @@ public class PaymentClient implements IPaymentClient {
 			WechatMark wechatMark = new WechatMark();
 			wechatMark.setCreateTime(new Date());
 			wechatMark.setType("退款");
-			wechatMark.setSrcBillNo(paymentDTO.getReqsn());
+			wechatMark.setBillNo(paymentDTO.getReqsn());
+			wechatMark.setSrcBillNo(paymentDTO.getOldreqsn());
 			wechatMark.setSerialNumber(paymentDTO.getOldtrxid());
 			wechatMark.setAmount(new BigDecimal(paymentDTO.getTrxamt()).divide(new BigDecimal("100"), MathContext.DECIMAL32));
 			Map<String, String> map = service.refund(paymentDTO.getTrxamt(), paymentDTO.getReqsn(), paymentDTO.getOldtrxid(), paymentDTO.getOldreqsn(), paymentDTO.getCusId(),

+ 1 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java

@@ -353,6 +353,7 @@ public class PaymentServiceImpl implements IPaymentService {
 				String trxstatus = AnalysisMapUtils.getString("trxstatus", params);
 				if (Objects.equals(trxstatus, "0000")) {
 					wechatMark.setSrcBillNo(AnalysisMapUtils.getString("cusorderid", params));
+					wechatMark.setBillNo(AnalysisMapUtils.getString("cusorderid", params));
 					wechatMark.setSerialNumber(AnalysisMapUtils.getString("trxid", params));
 					wechatMark.setAmount(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
 

+ 1 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/accountManagement/service/impl/AccountManagementServiceImpl.java

@@ -82,6 +82,7 @@ public class AccountManagementServiceImpl extends ServiceImpl<AccountManagementM
 			accountManagement.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 			accountManagement.setCreateTime(new Date());
 			accountManagement.setTenantId(AuthUtil.getTenantId());
+			accountManagement.setEnableOrNot(0);
 			baseMapper.insert(accountManagement);
 		}else {
 			accountManagement.setUpdateUser(AuthUtil.getUserId());

+ 1 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/service/impl/BrandDescServiceImpl.java

@@ -97,6 +97,7 @@ public class BrandDescServiceImpl extends ServiceImpl<BrandDescMapper, PjBrandDe
 			brandDesc.setUpdateUser(AuthUtil.getUserId());
 			brandDesc.setUpdateTime(new Date());
 			brandDesc.setTenantId(AuthUtil.getTenantId());
+			brandDesc.setEnableOrNot(0);
 			baseMapper.updateById(brandDesc);
 		} else {
 			brandDesc.setCreateUser(AuthUtil.getUserId());

+ 1 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java

@@ -170,6 +170,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 			corpsDesc.setCreateUser(userId);
 			corpsDesc.setSalesCompanyId(Long.valueOf(AuthUtil.getDeptId()));
 			corpsDesc.setSalesCompanyName(sysClient.getDept(Long.valueOf(AuthUtil.getDeptId())).getData().getFullName());
+			corpsDesc.setEnableOrNot(0);
 			baseMapper.insert(corpsDesc);
 		} else {
 			corpsDesc.setTenantId(SecureUtil.getTenantId());

+ 13 - 9
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java

@@ -49,6 +49,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -378,7 +379,7 @@ public class GoodsDescController extends BladeController {
 	public R<PjGoodsDesc> goodsDetail(PjGoodsDesc goods) {
 		goods.setTenantId(AuthUtil.getTenantId());
 		PjGoodsDesc detail = goodsDescService.getGoodsDetail(goods);
-		PjProductLaunch pjProductLaunch = productLaunchService.getOne(new LambdaQueryWrapper<PjProductLaunch>()
+		List<PjProductLaunch> pjProductLaunch = productLaunchService.list(new LambdaQueryWrapper<PjProductLaunch>()
 			.eq(PjProductLaunch::getIsDeleted, 0)
 			.eq(PjProductLaunch::getGoodsId, detail.getId())
 			.ne(PjProductLaunch::getInventory, 0)
@@ -390,14 +391,17 @@ public class GoodsDescController extends BladeController {
 		if (ObjectUtils.isNotNull(pjCorpsDesc)) {
 			priceSystem = pjCorpsDesc.getPriceSystem();
 		}
-		if ("售价1".equals(priceSystem)) {
-			detail.setPrice(pjProductLaunch.getPriceOne());
-		} else if ("售价2".equals(priceSystem)) {
-			detail.setPrice(pjProductLaunch.getPriceTwo());
-		} else if ("售价3".equals(priceSystem)) {
-			detail.setPrice(pjProductLaunch.getPriceThree());
-		} else if ("售价4".equals(priceSystem)) {
-			detail.setPrice(pjProductLaunch.getPriceFour());
+		if (pjProductLaunch.size() > 0) {
+			if ("售价1".equals(priceSystem)) {
+				detail.setPrice(pjProductLaunch.get(0).getPriceOne());
+			} else if ("售价2".equals(priceSystem)) {
+				detail.setPrice(pjProductLaunch.get(0).getPriceTwo());
+			} else if ("售价3".equals(priceSystem)) {
+				detail.setPrice(pjProductLaunch.get(0).getPriceThree());
+			} else if ("售价4".equals(priceSystem)) {
+				detail.setPrice(pjProductLaunch.get(0).getPriceFour());
+			}
+			detail.setInventory(pjProductLaunch.stream().map(PjProductLaunch::getInventory).reduce(BigDecimal.ZERO, BigDecimal::add));
 		}
 		return R.data(detail);
 	}

+ 1 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/impl/GoodsDescServiceImpl.java

@@ -145,6 +145,7 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, PjGoodsDe
 			goodsDesc.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 			goodsDesc.setTenantId(AuthUtil.getTenantId());
 			goodsDesc.setSalesCompanyName(iSysClient.getDeptName(goodsDesc.getSalesCompanyId()).getData());
+			goodsDesc.setEnableOrNot(0);
 			baseMapper.insert(goodsDesc);
 		} else {
 			goodsDesc.setUpdateUser(AuthUtil.getUserId());

+ 7 - 7
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java

@@ -279,18 +279,18 @@ public class OrderController extends BladeController {
 		LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 			.eq(PjOrder::getIsDeleted, 0)
-			.eq(PjOrder::getBsType, order.getBsType())
-			.eq(PjOrder::getBusinessSource, OrderTypeEnum.XCX)
+			.eq(PjOrder::getBsType, "XS")
+			.eq(PjOrder::getBusinessSource, OrderTypeEnum.XCX.getType())
 			.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())//公司
 			.eq(ObjectUtils.isNotEmpty(order.getXcxStatus()), PjOrder::getXcxStatus, order.getXcxStatus())//状态
 			.eq(ObjectUtils.isNotEmpty(order.getActualPaymentStatus()), PjOrder::getActualPaymentStatus, order.getActualPaymentStatus())//状态
 			.eq(ObjectUtils.isNotEmpty(order.getSalesCompanyName()), PjOrder::getSalesCompanyName, order.getSalesCompanyName())//所属公司
-			.and(ObjectUtils.isNotEmpty(order.getRetrieval()), i -> i.like(PjOrder::getGoodsNameJoin, order.getRetrieval())
-				.or().like(PjOrder::getShortcutJoin, order.getRetrieval())
-				.apply(ObjectUtils.isNotEmpty(order.getXcxStatus()), "find_in_set(xcx_status,'" + order.getXcxStatus() + "')")
-				.orderByDesc(PjOrder::getCreateTime));
+			.and(ObjectUtils.isNotNull(order.getRetrieval()), i -> i.like(PjOrder::getGoodsNameJoin, order.getRetrieval())
+				.or().like(PjOrder::getShortcutJoin, order.getRetrieval()))
+			.apply(ObjectUtils.isNotEmpty(order.getXcxStatus()), "find_in_set(xcx_status,'" + order.getXcxStatus() + "')")
+			.orderByDesc(PjOrder::getCreateTime);
 
-		IPage<PjOrder> pages = orderService.page(Condition.getPage(query), Condition.getQueryWrapper(order));
+		IPage<PjOrder> pages = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
 
 		pages.getRecords().forEach(e -> {
 			//获得销售明细

+ 11 - 11
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java

@@ -239,15 +239,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 						lambdaQueryWrapper.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
 							.eq(PjStockDesc::getIsDeleted, 0)
-							.eq(PjStockDesc::getGoodsId, item.getGoodsId())
-							.eq(PjStockDesc::getStorageId, order.getStorageId());
-
-						if (ObjectUtil.isNotEmpty(goodsDesc.getWhether()) && goodsDesc.getWhether().equals("1")) {//是否管理批次号
-							lambdaQueryWrapper.eq(PjStockDesc::getDot, item.getDot());
-						} else {
-							lambdaQueryWrapper.and(i -> i.eq(PjStockDesc::getDot, "").or().isNull(PjStockDesc::getDot));
+							.eq(PjStockDesc::getGoodsId, item.getGoodsId());
+						if (ObjectUtils.isNotNull(order.getBillType()) && 1 != order.getBillType()){
+							lambdaQueryWrapper.eq(PjStockDesc::getStorageId, order.getStorageId());
+							if (ObjectUtil.isNotEmpty(goodsDesc.getWhether()) && goodsDesc.getWhether().equals("1")) {//是否管理批次号
+								lambdaQueryWrapper.eq(PjStockDesc::getDot, item.getDot());
+							} else {
+								lambdaQueryWrapper.and(i -> i.eq(PjStockDesc::getDot, "").or().isNull(PjStockDesc::getDot));
+							}
 						}
-
 						PjStockDesc stockDesc = stockDescMapper.selectOne(lambdaQueryWrapper);
 						if (ObjectUtil.isNotEmpty(stockDesc)) {
 							item.setCostprie(item.getGoodsNum().multiply(stockDesc.getInventoryCostPrice()));
@@ -732,7 +732,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					}
 
 					//获得库存账
-					LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+					/*LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 					lambdaQueryWrapper.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
 						.eq(PjStockDesc::getIsDeleted, 0)
 						.eq(PjStockDesc::getSalesCompanyId, order.getSalesCompanyId())
@@ -763,7 +763,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						//库存成本价
 						stockOne.setInventoryCostPrice(stockOne.getInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 						stockDescMapper.updateById(stockOne);
-					}
+					}*/
 
 					/** ----------------------修改上架库存---------------------- */
 					//查询所有该商品的库存
@@ -783,7 +783,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						.eq(PjProductLaunch::getIsDeleted, 0)
 						.eq(PjProductLaunch::getSalesCompanyId, order.getSalesCompanyId())
 						.and(i -> i.eq(PjProductLaunch::getSalesCompanyId, order.getSalesCompanyId()).or().in(PjProductLaunch::getSourceCompanyId, order.getSalesCompanyId()))
-						.eq(PjProductLaunch::getGoodsId, stockOne.getGoodsId());
+						.eq(PjProductLaunch::getGoodsId, goodsDesc.getId());
 					List<PjProductLaunch> productLaunch = productLaunchMapper.selectList(productLaunchQueryWrapper);
 					//修改上架数量
 					if (ObjectUtil.isNotEmpty(productLaunch)) {

+ 1 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/controller/ProductLaunchController.java

@@ -97,6 +97,7 @@ public class ProductLaunchController extends BladeController {
 		LambdaQueryWrapper<PjProductLaunch> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
 			.eq(PjProductLaunch::getIsDeleted, 0)
+			.eq(ObjectUtils.isNotNull(productLaunch.getBrandId()),PjProductLaunch::getBrandId, productLaunch.getBrandId())
 			.eq(PjProductLaunch::getBillType, productLaunch.getBillType());
 		if (ObjectUtils.isNotNull(productLaunch.getSourceCompanyId())) {
 			lambdaQueryWrapper.eq(PjProductLaunch::getSalesCompanyId, productLaunch.getSourceCompanyId());//公司

+ 3 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/service/impl/ProductLaunchServiceImpl.java

@@ -263,11 +263,12 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 				LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 				lambdaQueryWrapper.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
 					.eq(PjStockDesc::getIsDeleted, 0)
+					.eq(PjStockDesc::getSalesCompanyId, AuthUtil.getDeptId())
 					.eq(PjStockDesc::getGoodsId, pjGoodsDesc.getId());
 
 				List<PjStockDesc> list = stockDescService.list(lambdaQueryWrapper);
 				if (ObjectUtil.isNotEmpty(list)) {
-					if (new BigDecimal("0.00").compareTo(list.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)) == 0){
+					if (new BigDecimal("0.00").compareTo(list.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)) == 0) {
 						throw new RuntimeException("商品" + e.getCname() + "库存为零,请处理后重新导入");
 					}
 					productLaunch.setInventory(list.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
@@ -638,7 +639,7 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 
 				List<PjStockDesc> pjStockDescList = stockDescService.list(lambdaQueryWrapper);
 				if (ObjectUtil.isNotEmpty(pjStockDescList)) {
-					if (new BigDecimal("0.00").compareTo(pjStockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)) == 0){
+					if (new BigDecimal("0.00").compareTo(pjStockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)) == 0) {
 						throw new RuntimeException("商品" + productLaunch.getCname() + "库存为零,请处理后重新导入");
 					}
 					productLaunch.setInventory(pjStockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));

+ 18 - 11
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java

@@ -299,6 +299,9 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R outboundCompleted(PjShip ship) {
 		ship.setStatusName(OrderTypeEnum.OURTBOUND.getType());
+		if (ObjectUtils.isNull(ship.getStorageId())) {
+			throw new RuntimeException("请先选择仓库");
+		}
 		if (ship.getId() == null) {
 			// 获取系统编号
 			R billNo = serialClient.getBillNo(OrderTypeEnum.FHGD.getType(), OrderTypeEnum.FHGD.getType(), OrderTypeEnum.FHGD.getType());
@@ -338,6 +341,15 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					item.setPid(ship.getId());
 				}
 				shipItemsList.add(item);
+				//获得商品
+				PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
+				if (ObjectUtil.isEmpty(goodsDesc)) {
+					throw new RuntimeException("商品数据异常");
+				}
+				if ("1".equals(goodsDesc.getWhether()) && ObjectUtils.isNull(item.getDot())) {
+					throw new RuntimeException("商品:" + goodsDesc.getCname() + ",请求选择批次号");
+				}
+
 				PjOrderItems orderItems = orderItemsService.getById(item.getSrcItemId());
 				if (ObjectUtil.isNotEmpty(orderItems)) {
 
@@ -346,16 +358,12 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					} else {
 						orderItems.setSendNum(orderItems.getSendNum().add(item.getSendNum()));
 					}
+					orderItems.setDot(orderItems.getDot() + "," + item.getDot());
 					pjOrderItemsList.add(orderItems);
 				} else {
 					throw new RuntimeException("数据异常请联系管理员");
 				}
 
-				//获得商品
-				PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
-				if (ObjectUtil.isEmpty(goodsDesc)) {
-					throw new RuntimeException("商品数据异常");
-				}
 				//修改库存账
 				LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 				lambdaQueryWrapper.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
@@ -408,18 +416,17 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		BigDecimal goodsNum = itemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
 		//发货数量和
 		BigDecimal sendNum = itemsList.stream().map(PjOrderItems::getSendNum).reduce(BigDecimal.ZERO, BigDecimal::add);
-
-		if (goodsNum.compareTo(sendNum) == 0) {//数量等于发货数量修改销售订单状态
-			PjOrder order = orderMapper.selectById(ship.getOrdId());
-			if (ObjectUtil.isNotEmpty(order)) {
+		PjOrder order = orderMapper.selectById(ship.getOrdId());
+		if (ObjectUtil.isNotEmpty(order)) {
+			if (goodsNum.compareTo(sendNum) == 0) {//数量等于发货数量修改销售订单状态
 				order.setStatus(OrderTypeEnum.SHIPED.getType());
 				order.setXcxStatus(OrderTypeEnum.GOODSRECEIVED.getType());
 				orderMapper.updateById(order);
 			} else {
-				throw new RuntimeException("数据异常请联系管理员");
+				order.setStorageId(ship.getStorageId());
+				orderMapper.updateById(order);
 			}
 		}
-
 		//生成出库工单历史记录
 		saveHistory(ship.getId(), OrderTypeEnum.OURTBOUND.getType());
 

+ 13 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java

@@ -19,7 +19,6 @@ package org.springblade.salesPart.shoppingCart.service.impl;
 import com.alibaba.csp.sentinel.util.StringUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -49,9 +48,11 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 配件批发购物车服务实现类
@@ -213,6 +214,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					ids.append(order.getId()).append(",");
 					//保存销售明细信息
 					if (ObjectUtil.isNotEmpty(shoppingCartList)) {
+						List<PjProductLaunch> pjProductLaunchList = new ArrayList<>();
 						shoppingCartList.forEach(e -> {
 							PjOrderItems orderItems = new PjOrderItems();
 							BeanUtils.copyProperties(e, orderItems);
@@ -237,7 +239,10 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 							//生成完毕删除购物车
 							e.setIsDeleted(1);
 							baseMapper.updateById(e);
-
+							PjProductLaunch productLaunch = productLaunchMapper.selectById(e.getProductLaunchId());
+							if (ObjectUtils.isNotNull(productLaunch)) {
+								pjProductLaunchList.add(productLaunch);
+							}
 							/*//修改上架管理库存
 							PjProductLaunch productLaunch = productLaunchMapper.selectById(e.getProductLaunchId());
 							if (ObjectUtil.isNotEmpty(productLaunch)) {
@@ -274,6 +279,12 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 								});
 							}*/
 						});
+						List<Integer> billType = pjProductLaunchList.stream().map(PjProductLaunch::getBillType).distinct().collect(Collectors.toList());
+						if (ObjectUtils.isNotNull(billType) && billType.size() > 1) {
+							throw new RuntimeException("请选择相同仓库的轮胎");
+						}else{
+							order.setBillType(billType.get(0));
+						}
 						BigDecimal totalMoney = BigDecimal.ZERO;
 						order.setNumberRows(shoppingCartList.size());//行数
 						//明细总数量

+ 22 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/stock/controller/StockDescController.java

@@ -88,8 +88,11 @@ public class StockDescController extends BladeController {
 			.like(ObjectUtil.isNotEmpty(stockDesc.getTypeno()), PjStockDesc::getTypeno, stockDesc.getTypeno())
 			.eq(ObjectUtil.isNotEmpty(stockDesc.getStorageId()), PjStockDesc::getStorageId, stockDesc.getStorageId())
 			.eq(ObjectUtil.isNotEmpty(stockDesc.getBrandId()), PjStockDesc::getBrandId, stockDesc.getBrandId())
+			.eq(ObjectUtil.isNotEmpty(stockDesc.getGoodsTypeId()), PjStockDesc::getGoodsTypeId, stockDesc.getGoodsTypeId())
 			.orderByAsc(PjStockDesc::getCreateTime);
-
+		if ("0".equals(stockDesc.getWhether())) {
+			lambdaQueryWrapper.ne(PjStockDesc::getStoreInventory, 0);
+		}
 		IPage<PjStockDesc> pages = stockDescService.page(Condition.getPage(query), lambdaQueryWrapper);
 
 		return R.data(pages);
@@ -212,6 +215,24 @@ public class StockDescController extends BladeController {
 	}
 
 	/**
+	 * 根据仓库和商品id获得所有批次号
+	 */
+	@GetMapping("/dotListAll")
+	@ApiOperationSupport(order = 10)
+	@ApiOperation(value = "根据仓库和商品id获得所有批次号", notes = "传入stockDesc")
+	public R<List<PjStockDesc>> dotListAll(PjStockDesc stockDesc) {
+		LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjStockDesc::getIsDeleted, 0)
+			.eq(PjStockDesc::getSalesCompanyId, AuthUtil.getDeptId())//公司
+			.eq(ObjectUtils.isNotNull(stockDesc.getStorageId()), PjStockDesc::getStorageId, stockDesc.getStorageId())
+			.eq(PjStockDesc::getGoodsId, stockDesc.getGoodsId());
+
+		List<PjStockDesc> list = stockDescService.list(lambdaQueryWrapper);
+		return R.data(list);
+	}
+
+	/**
 	 * 获得未导入到上架管理的库存账
 	 */
 	@GetMapping("/getStockList")

+ 4 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/stock/mapper/StockDescMapper.xml

@@ -26,6 +26,8 @@
         <result column="balance_quantity" property="balanceQuantity"/>
         <result column="sales_company_id" property="salesCompanyId"/>
         <result column="sales_company_name" property="salesCompanyName"/>
+        <result column="goods_type_name" property="goodsTypeName"/>
+        <result column="version" property="version"/>
     </resultMap>
 
 
@@ -59,7 +61,8 @@
         store_inventory,
         inventory_amount,
         inventory_cost_price,
-        inventory_alert
+        inventory_alert,
+        goods_type_name
         FROM pjpf_stock_desc
         <where>
              is_deleted = 0

+ 30 - 6
blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java

@@ -25,6 +25,7 @@ import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+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.UserOauth;
@@ -52,16 +53,20 @@ public class UserClient implements IUserClient {
 
 	private final IUserService service;
 
+	private final ISysClient sysClient;
+
 	@Override
 	@GetMapping(LIST_USER_BY_ROLE_ID)
 	public R<List<User>> listUserByRoleId(Long roleId) {
 		LambdaQueryWrapper<User> userLambdaQueryWrapper = new LambdaQueryWrapper<>();
 		userLambdaQueryWrapper
 			.eq(User::getIsDeleted, 0)
-			.eq(User::getRoleId, roleId)
 			.eq(User::getTenantId, AuthUtil.getTenantId());
-		if ("883868".equals(AuthUtil.getTenantId())){
-			userLambdaQueryWrapper.eq(User::getDeptId,AuthUtil.getDeptId());
+		if ("883868".equals(AuthUtil.getTenantId())) {
+			userLambdaQueryWrapper.eq(User::getDeptId, AuthUtil.getDeptId())
+				.apply("find_in_set('" + roleId + "',role_id)");
+		} else {
+			userLambdaQueryWrapper.eq(User::getRoleId, roleId);
 		}
 		return R.data(service.list(userLambdaQueryWrapper));
 	}
@@ -82,6 +87,25 @@ public class UserClient implements IUserClient {
 	}
 
 	@Override
+	@GetMapping(GET_USER_BY_ROLE)
+	public List<User> getUserByRole() {
+		R<String> res = sysClient.getRoleIds("业务员", AuthUtil.getTenantId());
+		if (!res.isSuccess()) {
+			return new ArrayList<>();
+		} else {
+			LambdaQueryWrapper<User> userLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			userLambdaQueryWrapper
+				.eq(User::getIsDeleted, 0)
+				.eq(User::getTenantId, AuthUtil.getTenantId())
+				.apply("find_in_set(role_id,'" + res.getData() + "')");
+			if ("883868".equals(AuthUtil.getTenantId())) {
+				userLambdaQueryWrapper.eq(User::getDeptId, AuthUtil.getDeptId());
+			}
+			return service.list(userLambdaQueryWrapper);
+		}
+	}
+
+	@Override
 	@GetMapping(USER_INFO_BY_ID)
 	public R<User> userInfoById(Long userId) {
 		return R.data(service.getById(userId));
@@ -171,10 +195,10 @@ public class UserClient implements IUserClient {
 	@Override
 	public String selectUserByNames(String adminProfilesName) {
 		List<Long> ids = service.list(new LambdaQueryWrapper<User>().eq(User::getIsDeleted, 0)
-			.eq(User::getTenantId,AuthUtil.getTenantId())
+			.eq(User::getTenantId, AuthUtil.getTenantId())
 			.apply("find_in_set(real_name,'" + adminProfilesName + "')")
-			.last("ORDER BY find_in_set(real_name,'"+ adminProfilesName + "')")
-			).stream().map(User::getId).collect(Collectors.toList());
+			.last("ORDER BY find_in_set(real_name,'" + adminProfilesName + "')")
+		).stream().map(User::getId).collect(Collectors.toList());
 		List<String> idLists = new ArrayList<>();
 		for (Long id : ids) {
 			idLists.add(id + "");