Browse Source

1.酷比森线上服务器重新部署
2.门店app商品列表数据接口增加检索条件
3.调试添加购物车接口及问题修改
4.禅道bug-3262-出库工单-待出库,订单数量计算错误
5.禅道bug-3229-销售订单选择“无库存商品”,有报错弹窗
6.禅道bug-3230-销售订单导出表格问题
7.禅道bug-3276-销售订单中返回的发货数量逻辑需要修改
8.禅道bug-3289-一个销售订单,销售两种商品问题

纪新园 3 months ago
parent
commit
ed65418c05
14 changed files with 470 additions and 362 deletions
  1. 0 30
      blade-service-api/gubersail-dealer-admin-api/src/main/java/com/gubersail/dealer/admin/api/excel/PjOrderExportExcelXS.java
  2. 18 0
      blade-service-api/gubersail-dealer-admin-api/src/main/java/com/gubersail/dealer/admin/api/stock/entity/TireStockDesc.java
  3. 0 1
      blade-service-api/gubersail-shop-app-api/src/main/java/com/gubersail/shop/app/api/shoppingCart/entity/ShopAppShoppingCart.java
  4. 18 3
      blade-service-api/gubersail-shop-app-api/src/main/java/com/gubersail/shop/app/api/stock/entity/ShopAppTireStockDesc.java
  5. 4 4
      blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java
  6. 59 0
      blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/goods/controller/GoodsDescController.java
  7. 28 26
      blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/order/controller/OrderController.java
  8. 73 75
      blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/ship/service/impl/ShipServiceImpl.java
  9. 141 0
      blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/goods/controller/ShopAppBrandDescController.java
  10. 0 221
      blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/order/controller/OrderController.java
  11. 119 0
      blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/order/controller/ShopAppOrderController.java
  12. 1 1
      blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/shoppingCart/controller/ShopAppShoppingCartController.java
  13. 4 1
      blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/shoppingCart/service/impl/ShopAppShoppingCartServiceImpl.java
  14. 5 0
      blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/stock/service/impl/ShopAppTireStockDescServiceImpl.java

+ 0 - 30
blade-service-api/gubersail-dealer-admin-api/src/main/java/com/gubersail/dealer/admin/api/excel/PjOrderExportExcelXS.java

@@ -61,12 +61,6 @@ public class PjOrderExportExcelXS implements Serializable {
 	private String businessSource;
 
 	/**
-	 * 所属公司名称
-	 */
-	@ExcelProperty(value = "所属公司")
-	private String salesCompanyName;
-
-	/**
 	 * 客户名称
 	 */
 	@ExcelProperty(value = "业务对象")
@@ -79,12 +73,6 @@ public class PjOrderExportExcelXS implements Serializable {
 	private String salerName;
 
 	/**
-	 * 发货仓库名称
-	 */
-	@ExcelProperty(value = "仓库")
-	private String storageName;
-
-	/**
 	 * 行数
 	 */
 	@ExcelProperty(value = "行数")
@@ -106,17 +94,6 @@ public class PjOrderExportExcelXS implements Serializable {
 	private BigDecimal freight;
 
 	/**
-	 * 成本
-	 */
-	@ExcelProperty(value = "成本")
-	private BigDecimal cost;
-	/**
-	 * 毛利
-	 */
-	@ExcelProperty(value = "毛利")
-	private BigDecimal grossProfit;
-
-	/**
 	 * 订单状态
 	 */
 	@ExcelProperty(value = "状态")
@@ -132,13 +109,6 @@ public class PjOrderExportExcelXS implements Serializable {
 	private Integer actualPaymentStatus;
 
 	/**
-	 * 应结日期
-	 */
-	@ExcelProperty(value = "应结日期")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-	@DateTimeFormat(pattern = "yyyy-MM-dd")
-	private Date dueDate;
-	/**
 	 * 业务日期
 	 */
 	@ExcelProperty(value = "业务日期")

+ 18 - 0
blade-service-api/gubersail-dealer-admin-api/src/main/java/com/gubersail/dealer/admin/api/stock/entity/TireStockDesc.java

@@ -274,6 +274,24 @@ public class TireStockDesc implements Serializable {
 	@ApiModelProperty(value = "预出库数量")
 	private BigDecimal preOutboundQuantity;
 
+	/**
+	 * 防爆(0否,1是)
+	 */
+	@ApiModelProperty(value = "防爆(0否,1是)")
+	private Integer explosionProof;
+
+	/**
+	 * 静音棉
+	 */
+	@ApiModelProperty(value = "静音棉")
+	private String originalFactory;
+
+	/**
+	 * 自修补
+	 */
+	@ApiModelProperty(value = "自修补")
+	private String selfRecovery;
+
 	@TableField(exist = false)
 	private List<PjGoodsFiles> goodsFilesList;
 	@TableField(exist = false)

+ 0 - 1
blade-service-api/gubersail-shop-app-api/src/main/java/com/gubersail/shop/app/api/shoppingCart/entity/ShopAppShoppingCart.java

@@ -53,7 +53,6 @@ public class ShopAppShoppingCart implements Serializable {
 	 */
 	@ApiModelProperty(value = "租户id")
 	private String tenantId = AuthUtil.getTenantId();
-	;
 
 	/**
 	 * 单据编号

+ 18 - 3
blade-service-api/gubersail-shop-app-api/src/main/java/com/gubersail/shop/app/api/stock/entity/ShopAppTireStockDesc.java

@@ -16,9 +16,7 @@
  */
 package com.gubersail.shop.app.api.stock.entity;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.gubersail.shop.app.api.goods.entity.ShopAppGoodsFiles;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -27,7 +25,6 @@ import org.springblade.core.secure.utils.AuthUtil;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-import java.util.List;
 
 /**
  * 配件批发库存表实体类
@@ -274,4 +271,22 @@ public class ShopAppTireStockDesc implements Serializable {
 	@ApiModelProperty(value = "预出库数量")
 	private BigDecimal preOutboundQuantity;
 
+	/**
+	 * 防爆(0否,1是)
+	 */
+	@ApiModelProperty(value = "防爆(0否,1是)")
+	private Integer explosionProof;
+
+	/**
+	 * 静音棉
+	 */
+	@ApiModelProperty(value = "静音棉")
+	private String originalFactory;
+
+	/**
+	 * 自修补
+	 */
+	@ApiModelProperty(value = "自修补")
+	private String selfRecovery;
+
 }

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

@@ -274,11 +274,11 @@ public class UserClient implements IUserClient {
 
 	@Override
 	public List<User> selectUserList(String corpIds) {
-		return service.list(new LambdaQueryWrapper<User>()
-			.eq(User::getTenantId, AuthUtil.getTenantId())
+		List<User> userList = service.list(new LambdaQueryWrapper<User>()
 			.eq(User::getIsDeleted, 0)
 			.apply(ObjectUtils.isNotNull(corpIds), "find_in_set(id,'" + corpIds + "')")
 		);
+		return userList;
 	}
 
 	@Override
@@ -350,7 +350,7 @@ public class UserClient implements IUserClient {
 			userToSave.setRealName(customerSel.getCustomerName());
 			userToSave.setCustomerId(customerSel.getCustomerId());
 			userToSave.setRoleId(dealerRoleId);
-			 userToSave.setAccount(customerSel.getCustomerCode());
+			userToSave.setAccount(customerSel.getCustomerCode());
 //			userToSave.setAccount(customerSel.getCustomerName());
 			// userToSave.setAccount(customerSel.getDescFlexFieldPrivateDescSeg1());
 			userToSave.setPhone(customerSel.getDescFlexFieldPrivateDescSeg2());
@@ -403,7 +403,7 @@ public class UserClient implements IUserClient {
 		// 创建新部门
 		Dept newDept = new Dept(parentId, customerName, customerName, NumberEnum.THREE.number, tenantId);
 		R<Dept> r = sysClient.getDept(parentId);
-		if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())){
+		if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
 			Dept parent = r.getData();
 			String ancestors = parent.getAncestors() + StringPool.COMMA + parentId;
 			newDept.setAncestors(ancestors);

+ 59 - 0
blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/goods/controller/GoodsDescController.java

@@ -47,6 +47,7 @@ import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -91,6 +92,64 @@ public class GoodsDescController extends BladeController {
 	}
 
 	/**
+	 * 分页 配件批发商品表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入goods")
+	public R<IPage<PjGoodsDesc>> list(PjGoodsDesc goods, Query query) {
+		LambdaQueryWrapper<PjGoodsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+
+		//指定分类为一级分类,查询此分类所有二级分类的商品
+		if (StringUtils.isNotBlank(goods.getGoodsTypeId())) {
+			Long goodsId = Long.parseLong(goods.getGoodsTypeId());
+			List<Long> goodsIdList = new ArrayList<>();
+			selectChildById(goodsId, goodsIdList);
+			goodsIdList.add(goodsId);
+
+			lambdaQueryWrapper.in(PjGoodsDesc::getGoodsTypeId, goodsIdList);
+		}
+
+		lambdaQueryWrapper.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjGoodsDesc::getIsDeleted, 0)
+			.eq(PjGoodsDesc::getSalesCompanyId, AuthUtil.getDeptId())//公司
+			.like(StringUtils.isNotBlank(goods.getSpecificationAndModel()), PjGoodsDesc::getSpecificationAndModel, goods.getSpecificationAndModel())//规格型号
+			.like(StringUtils.isNotBlank(goods.getBrandItem()), PjGoodsDesc::getBrandItem, goods.getBrandItem())//花纹
+			// 尺寸
+			.eq(StringUtils.isNotBlank(goods.getGoodsSize()), PjGoodsDesc::getGoodsSize, goods.getGoodsSize())
+			.eq(ObjectUtils.isNotEmpty(goods.getBrandId()), PjGoodsDesc::getBrandId, goods.getBrandId())//品牌
+			.like(ObjectUtils.isNotEmpty(goods.getBrandName()), PjGoodsDesc::getBrandName, goods.getBrandName())
+			.like(ObjectUtils.isNotEmpty(goods.getCnameInt()), PjGoodsDesc::getCnameInt, goods.getCnameInt())
+			.like(ObjectUtils.isNotEmpty(goods.getCode()), PjGoodsDesc::getCode, goods.getCode())//编码
+			.eq(ObjectUtils.isNotNull(goods.getWhetherIntegral()), PjGoodsDesc::getWhetherIntegral, goods.getWhetherIntegral())//是否是积分商品
+			.eq(ObjectUtils.isNotNull(goods.getEnableOrNot()), PjGoodsDesc::getEnableOrNot, goods.getEnableOrNot())//状态
+			.eq(ObjectUtils.isNotEmpty(goods.getWhether()), PjGoodsDesc::getWhether, goods.getWhether())//是否管理到批次号
+			.eq(ObjectUtils.isNotEmpty(goods.getExplosionProof()), PjGoodsDesc::getExplosionProof, goods.getExplosionProof())//是否防爆
+			//是否共享商品
+			.eq(ObjectUtils.isNotEmpty(goods.getShared()), PjGoodsDesc::getShared, goods.getShared());
+		if (ObjectUtil.isNotEmpty(goods.getCname())) {
+			lambdaQueryWrapper.and(i -> i.like(PjGoodsDesc::getCname, goods.getCname()).or().like(PjGoodsDesc::getCnameInt, goods.getCname()));
+		}
+		lambdaQueryWrapper.orderByDesc(PjGoodsDesc::getCreateTime);
+		IPage<PjGoodsDesc> pages = goodsDescService.page(Condition.getPage(query), lambdaQueryWrapper);
+
+		if (!pages.getRecords().isEmpty()) {
+			List<Long> ids = pages.getRecords().stream().map(PjGoodsDesc::getId).collect(Collectors.toList());
+			List<TireStockDesc> pjStockDescList = stockDescService.list(new LambdaQueryWrapper<TireStockDesc>()
+				.eq(TireStockDesc::getTenantId, AuthUtil.getTenantId())
+				.eq(TireStockDesc::getIsDeleted, 0)
+				.in(TireStockDesc::getGoodsId, ids));
+			pages.getRecords().forEach(e -> {
+				if (!pjStockDescList.isEmpty()) {
+					e.setInventory(pjStockDescList.stream().filter(item -> e.getId().equals(item.getGoodsId()))
+						.map(TireStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				}
+			});
+		}
+		return R.data(pages);
+	}
+
+	/**
 	 * 商品下拉 销售订单查询-全部
 	 */
 	@GetMapping("/goodsListXs")

+ 28 - 26
blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/order/controller/OrderController.java

@@ -259,6 +259,7 @@ public class OrderController extends BladeController {
 		}
 		List<PjOrder> pages = orderService.list(lambdaQueryWrapper);
 		List<OrderVO> orderVOList = OrderWrapper.build().listVO(pages);
+		List<PjOrderExportExcelXS> list = new ArrayList<>();
 		if (CollectionUtils.isNotEmpty(orderVOList)) {
 			List<Long> userIds = new ArrayList<>();
 			List<Long> createUser = orderVOList.stream().map(OrderVO::getCreateUser).filter(Objects::nonNull).distinct().collect(Collectors.toList());
@@ -282,17 +283,7 @@ public class OrderController extends BladeController {
 				.eq(PjOrderItems::getIsDeleted, 0)
 				.in(PjOrderItems::getPid, orderVOList.stream().map(PjOrder::getId).distinct().collect(Collectors.toList())));
 			for (OrderVO item : orderVOList) {
-				if (ObjectUtil.isNotEmpty(userList)) {
-					if (ObjectUtils.isNotNull(item.getUpdateUser())) {
-						userList.stream().filter(e -> e.getId().equals(item.getUpdateUser()))
-							.findFirst().ifPresent(users -> item.setUpdateUserName(users.getRealName()));
-					}
-					if (ObjectUtils.isNotNull(item.getCreateUser())) {
-						userList.stream().filter(e -> e.getId().equals(item.getCreateUser()))
-							.findFirst().ifPresent(users -> item.setCreateUserName(users.getRealName()));
-					}
-
-				}
+				PjOrderExportExcelXS excelXS = new PjOrderExportExcelXS();
 				List<Long> pjOrderItems = pjOrderItemsList.stream().filter(e -> e.getPid().equals(item.getId()))
 					.map(PjOrderItems::getGoodsId).filter(Objects::nonNull).collect(Collectors.toList());
 				item.setGoodsIds(pjOrderItems.stream().map(Object::toString).collect(Collectors.joining(",")));
@@ -303,20 +294,29 @@ public class OrderController extends BladeController {
 				} else {
 					item.setReturnsStatus("无");
 				}
-			}
-		}
-		List<PjOrderExportExcelXS> list = BeanUtil.copy(orderVOList, PjOrderExportExcelXS.class);
-		for (PjOrderExportExcelXS item : list) {
-			if (1 == item.getActualPaymentStatus()) {
-				item.setPaymentStatus("待付款");
-			} else if (2 == item.getActualPaymentStatus()) {
-				item.setPaymentStatus("已付款");
-			} else if (3 == item.getActualPaymentStatus()) {
-				item.setPaymentStatus("尾款");
-			} else if (4 == item.getActualPaymentStatus()) {
-				item.setPaymentStatus("已退款");
-			} else {
-				item.setPaymentStatus("-");
+				BeanUtil.copyProperties(item,excelXS);
+				if (ObjectUtil.isNotEmpty(userList)) {
+					if (ObjectUtils.isNotNull(item.getUpdateUser())) {
+						userList.stream().filter(e -> e.getId().equals(item.getUpdateUser()))
+							.findFirst().ifPresent(users -> excelXS.setUpdateUserName(users.getRealName()));
+					}
+					if (ObjectUtils.isNotNull(item.getCreateUser())) {
+						userList.stream().filter(e -> e.getId().equals(item.getCreateUser()))
+							.findFirst().ifPresent(users -> excelXS.setCreateUserName(users.getRealName()));
+					}
+				}
+				if (1 == item.getActualPaymentStatus()) {
+					excelXS.setPaymentStatus("待付款");
+				} else if (2 == item.getActualPaymentStatus()) {
+					excelXS.setPaymentStatus("已付款");
+				} else if (3 == item.getActualPaymentStatus()) {
+					excelXS.setPaymentStatus("尾款");
+				} else if (4 == item.getActualPaymentStatus()) {
+					excelXS.setPaymentStatus("已退款");
+				} else {
+					excelXS.setPaymentStatus("-");
+				}
+				list.add(excelXS);
 			}
 		}
 		ExcelUtil.export(response, "销售订单", "订单数据", list, PjOrderExportExcelXS.class);
@@ -502,7 +502,9 @@ public class OrderController extends BladeController {
 		voPage.setSize(pages.getSize());
 		if (CollectionUtils.isNotEmpty(pages.getRecords())) {
 			List<Long> ids = pages.getRecords().stream().map(PjOrder::getId).collect(Collectors.toList());
-			List<PjOrderItems> pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>().eq(PjOrderItems::getIsDeleted, 0)
+			List<PjOrderItems> pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+				.eq(PjOrderItems::getIsDeleted, 0)
+					.apply("goods_num != send_num")
 				.in(PjOrderItems::getPid, ids));
 			for (PjOrder item : pages.getRecords()) {
 				if (!pjOrderItemsList.isEmpty()) {

+ 73 - 75
blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/ship/service/impl/ShipServiceImpl.java

@@ -184,8 +184,6 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 			});
 			shipItemsService.saveOrUpdateBatch(shipItemsList);
 			ship.setNumberRows(shipVO.getShipItemsList().size());
-
-			ship.setGoodsTotalNum(shipVO.getShipItemsList().stream().map(PjShipItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 			ship.setSendTotalNum(shipVO.getShipItemsList().stream().map(PjShipItems::getSendNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		}
 		baseMapper.updateById(ship);
@@ -225,7 +223,6 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		if (ObjectUtils.isNull(ship.getStorageId())) {
 			throw new RuntimeException("请先选择仓库");
 		}
-		ship.setGoodsTotalNum(shipVO.getShipItemsList().stream().map(PjShipItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		ship.setSendTotalNum(shipVO.getShipItemsList().stream().map(PjShipItems::getSendNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		ship.setStatusName(OrderTypeEnum.OURTBOUND.getType());
 		if (ship.getId() == null) {
@@ -252,6 +249,12 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		List<TireStockDesc> pjStockDescArrayList = new ArrayList<>();
 		if (CollectionUtils.isNotEmpty(shipVO.getShipItemsList())) {
 			if ("内部销售".equals(ship.getBsType())) {
+				// 保存订单明细
+				List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
+				List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+					.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+					.eq(PjOrderItems::getIsDeleted, 0)
+					.eq(PjOrderItems::getPid, ship.getOrdId()));
 				List<Long> goodIds = shipVO.getShipItemsList().stream().map(PjShipItems::getGoodsId).distinct().collect(Collectors.toList());
 				LambdaQueryWrapper<PjGoodsDesc> lambdaQueryWrapperGoods = new LambdaQueryWrapper<PjGoodsDesc>()
 					.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
@@ -304,6 +307,35 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(inventoryAmount));
 						stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().subtract(rebateInventoryAmount));
 						stockOne.setVersion(stockOne.getVersion());
+						PjOrderItems orderItems = orderItemsList.stream().filter(e -> e.getId().equals(item.getSrcItemId())).findFirst().orElse(null);
+						if (orderItems != null) {
+							if (orderItems.getGoodsNum().compareTo(orderItems.getSendNum().add(item.getSendNum())) < 0) {
+								throw new RuntimeException(orderItems.getGoodsName() + "剩余应发货数量" + orderItems.getGoodsNum().subtract(orderItems.getSendNum()));
+							} else {
+								orderItems.setSendNum(orderItems.getSendNum().add(item.getSendNum()));
+							}
+							orderItems.setGoodsTotalShipAmount(orderItems.getSendNum().multiply(orderItems.getPrice()));
+							if (ObjectUtils.isNull(orderItems.getCostprie()) || new BigDecimal("0.00").compareTo(orderItems.getCostprie()) == 0) {
+								orderItems.setCostpriePrice(stockOne.getInventoryCostPrice());
+								orderItems.setCostprie(stockOne.getInventoryCostPrice().multiply(orderItems.getGoodsNum()));
+								orderItems.setGrossProfit(orderItems.getSubTotalMoney().subtract(orderItems.getCostprie()));
+								orderItems.setProfit(orderItems.getSubTotalMoney().subtract(orderItems.getCostprie()));
+							}
+							if (ObjectUtils.isNull(orderItems.getRebateCostprie()) || new BigDecimal("0.00").compareTo(orderItems.getRebateCostprie()) == 0) {
+								orderItems.setRebatePrice(stockOne.getRebatePrice());
+								orderItems.setRebateCostprie(stockOne.getRebatePrice().multiply(orderItems.getGoodsNum()));
+								orderItems.setRebateProfit(orderItems.getSubTotalMoney().subtract(orderItems.getRebateCostprie()));
+							}
+							pjOrderItemsList.add(orderItems);
+						} else {
+							throw new RuntimeException("数据异常请联系管理员");
+						}
+						item.setCostprie(item.getSendNum().multiply(stockOne.getInventoryCostPrice()));
+						item.setCostpriePrice(stockOne.getInventoryCostPrice());
+						item.setProfit(item.getSubTotalMoney().subtract(orderItems.getCostprie()));
+						item.setRebateCostprie(item.getSendNum().multiply(stockOne.getRebatePrice()));
+						item.setRebatePrice(stockOne.getRebatePrice());
+						item.setRebateProfit(item.getSubTotalMoney().subtract(item.getRebateCostprie()));
 					} else {
 						msg.append(goodsDesc.getCname()).append(",");
 					}
@@ -316,6 +348,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				if (!res.isSuccess()) {
 					throw new RuntimeException(res.getMsg());
 				}
+				orderItemsService.updateBatchById(pjOrderItemsList);
+				shipItemsService.updateBatchById(shipVO.getShipItemsList());
 				ship.setNumberRows(shipVO.getShipItemsList().size());
 				PjOrder order = orderMapper.selectById(ship.getOrdId());
 				if (ObjectUtil.isNotEmpty(order)) {
@@ -323,13 +357,13 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						throw new RuntimeException("单据已收货或申请售后中,操作失败");
 					}
 					//数量和
-					BigDecimal goodsNum = shipVO.getShipItemsList().stream().map(PjShipItems::getGoodsNum).filter(Objects::nonNull)
-						.reduce(BigDecimal.ZERO, BigDecimal::add);
+					BigDecimal goodsNum = order.getGoodsTotalNum();
 					//发货数量和
-					BigDecimal sendNum = shipVO.getShipItemsList().stream().map(PjShipItems::getSendNum).filter(Objects::nonNull)
+					BigDecimal sendNum = pjOrderItemsList.stream().map(PjOrderItems::getSendNum).filter(Objects::nonNull)
 						.reduce(BigDecimal.ZERO, BigDecimal::add);
 					order.setVersion(order.getVersion() + 1);
-					if (goodsNum.compareTo(sendNum) == 0) {//数量等于发货数量修改销售订单状态
+					order.setOutGoodsTotalShipNum(order.getOutGoodsTotalShipNum().add(sendNum));
+					if (goodsNum.compareTo(order.getOutGoodsTotalShipNum()) == 0) {//数量等于发货数量修改销售订单状态
 						order.setDeliveryBusinesDate(new Date());
 						order.setStatus(OrderTypeEnum.SHIPED.getType());
 						orderMapper.updateById(order);
@@ -381,6 +415,12 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockLambdaQueryWrapperTireStock.eq(TireStockDesc::getCreateDept, AuthUtil.getDeptId());
 				}
 				List<TireStockDesc> pjStockDescList = iStockDescService.list(stockLambdaQueryWrapperTireStock);
+				// 保存订单明细
+				List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
+				List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+					.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+					.eq(PjOrderItems::getIsDeleted, 0)
+					.eq(PjOrderItems::getPid, ship.getOrdId()));
 				for (PjShipItems item : shipVO.getShipItemsList()) {
 					//获得商品
 					PjGoodsDesc goodsDesc = pjGoodsDescList.stream().filter(e -> e.getId().equals(item.getGoodsId())).findFirst().orElse(null);
@@ -410,11 +450,20 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					} else {
 						throw new RuntimeException("未查到库存账");
 					}
+					PjOrderItems orderItems = orderItemsList.stream().filter(e -> e.getId().equals(item.getSrcItemId())).findFirst().orElse(null);
+					if (orderItems != null) {
+						orderItems.setSendNum(orderItems.getSendNum().subtract(item.getSendNum()));
+						orderItems.setGoodsTotalShipAmount(orderItems.getSendNum().multiply(orderItems.getPrice()));
+						pjOrderItemsList.add(orderItems);
+					} else {
+						throw new RuntimeException("数据异常请联系管理员");
+					}
 				}
 				R res = iStockDescService.updateBatchByIdNew(pjStockDescArrayList);
 				if (!res.isSuccess()) {
 					throw new RuntimeException(res.getMsg());
 				}
+				orderItemsService.updateBatchById(pjOrderItemsList);
 				ship.setNumberRows(shipVO.getShipItemsList().size());
 				PjOrder order = orderMapper.selectById(ship.getOrdId());
 				if (ObjectUtil.isNotEmpty(order)) {
@@ -431,6 +480,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					order.setDeliveryBusinesDate(null);
 					order.setStatus(OrderTypeEnum.GENERATED.getType());
 					order.setVersion(order.getVersion() + 1);
+					order.setOutGoodsTotalShipNum(order.getOutGoodsTotalShipNum().subtract(pjOrderItemsList.stream().map(PjOrderItems::getSendNum).filter(Objects::nonNull)
+						.reduce(BigDecimal.ZERO, BigDecimal::add)));
 					orderMapper.updateById(order);
 				} else {
 					throw new RuntimeException("数据异常请联系管理员");
@@ -2750,46 +2801,16 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 			ship.setNumberRows(shipDTO.getShipItemsList().size());
 			ship.setGoodsTotalNum(shipDTO.getShipItemsList().get(0).getGoodsNum());
 			ship.setSendTotalNum(shipDTO.getShipItemsList().stream().map(PjShipItems::getSendNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-			// 保存订单明细
-			List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
-			List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
-				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
-				.eq(PjOrderItems::getIsDeleted, 0)
-				.eq(PjOrderItems::getPid, shipDTO.getOrdId()));
-			for (PjShipItems item : shipDTO.getShipItemsList()) {
-				PjOrderItems orderItems = orderItemsList.stream().filter(e -> e.getId().equals(item.getSrcItemId())).findFirst().orElse(null);
-				if (orderItems != null) {
-					if (orderItems.getGoodsNum().compareTo(orderItems.getSendNum().add(item.getSendNum())) < 0) {
-						throw new RuntimeException(orderItems.getGoodsName() + "剩余应发货数量" + orderItems.getGoodsNum().subtract(orderItems.getSendNum()));
-					} else {
-						orderItems.setSendNum(orderItems.getSendNum().add(item.getSendNum()));
-					}
-					orderItems.setGoodsTotalShipAmount(orderItems.getSendNum().multiply(orderItems.getPrice()));
-					pjOrderItemsList.add(orderItems);
-				} else {
-					throw new RuntimeException("数据异常请联系管理员");
-				}
-			}
-			orderItemsService.updateBatchById(pjOrderItemsList);
 			PjOrder order = orderMapper.selectById(ship.getOrdId());
 			if (ObjectUtil.isNotEmpty(order)) {
-				if (!orderItemsList.isEmpty()) {
-					if ("已收货".equals(order.getStatus()) || "申请退货".equals(order.getStatus()) || "已取消".equals(order.getStatus())) {
-						throw new RuntimeException("单据已收货或申请售后中,操作失败");
-					}
-					//发货数量和
-					BigDecimal sendNum = orderItemsList.stream().map(PjOrderItems::getSendNum).filter(Objects::nonNull)
-						.reduce(BigDecimal.ZERO, BigDecimal::add);
-					BigDecimal goodsTotalShipAmount = orderItemsList.stream().map(PjOrderItems::getGoodsTotalShipAmount)
-						.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-					order.setGoodsTotalShipAmount(goodsTotalShipAmount);
-					order.setGoodsTotalShipNum(sendNum);
-					order.setVersion(order.getVersion() + 1);
-					order.setStatus(OrderTypeEnum.GENERATED.getType());
-					order.setStorageId(ship.getStorageId());
-					order.setStorageName(ship.getStorageName());
-					orderMapper.updateById(order);
+				if ("已收货".equals(order.getStatus()) || "申请退货".equals(order.getStatus()) || "已取消".equals(order.getStatus())) {
+					throw new RuntimeException("单据已收货或申请售后中,操作失败");
 				}
+				order.setVersion(order.getVersion() + 1);
+				order.setStatus(OrderTypeEnum.GENERATED.getType());
+				order.setStorageId(ship.getStorageId());
+				order.setStorageName(ship.getStorageName());
+				orderMapper.updateById(order);
 			}
 		}
 		baseMapper.updateById(ship);
@@ -2805,44 +2826,21 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		if (ship == null) {
 			throw new RuntimeException("未查到出库单据");
 		}
+		if ("已出库".equals(ship.getStatusName())) {
+			throw new RuntimeException("工单已出库");
+		}
 		List<PjShipItems> shipItemsList = shipItemsService.list(new LambdaQueryWrapper<PjShipItems>()
 			.eq(PjShipItems::getIsDeleted, 0)
 			.eq(PjShipItems::getPid, id));
 		if (!shipItemsList.isEmpty()) {
-			// 保存订单明细
-			List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
-			List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
-				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
-				.eq(PjOrderItems::getIsDeleted, 0)
-				.eq(PjOrderItems::getPid, ship.getOrdId()));
-			for (PjShipItems item : shipItemsList) {
-				PjOrderItems orderItems = orderItemsList.stream().filter(e -> e.getId().equals(item.getSrcItemId())).findFirst().orElse(null);
-				if (orderItems != null) {
-					orderItems.setSendNum(orderItems.getSendNum().subtract(item.getSendNum()));
-					orderItems.setGoodsTotalShipAmount(orderItems.getSendNum().multiply(orderItems.getPrice()));
-					pjOrderItemsList.add(orderItems);
-				} else {
-					throw new RuntimeException("数据异常请联系管理员");
-				}
-			}
-			orderItemsService.updateBatchById(pjOrderItemsList);
 			PjOrder order = orderMapper.selectById(ship.getOrdId());
 			if (ObjectUtil.isNotEmpty(order)) {
-				if (!pjOrderItemsList.isEmpty()) {
-					if ("已收货".equals(order.getStatus()) || "申请退货".equals(order.getStatus()) || "已取消".equals(order.getStatus())) {
-						throw new RuntimeException("单据已收货或申请售后中,操作失败");
-					}
-					//发货数量和
-					BigDecimal sendNum = pjOrderItemsList.stream().map(PjOrderItems::getSendNum).filter(Objects::nonNull)
-						.reduce(BigDecimal.ZERO, BigDecimal::add);
-					BigDecimal goodsTotalShipAmount = pjOrderItemsList.stream().map(PjOrderItems::getGoodsTotalShipAmount)
-						.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-					order.setGoodsTotalShipAmount(goodsTotalShipAmount);
-					order.setGoodsTotalShipNum(sendNum);
-					order.setVersion(order.getVersion() + 1);
-					order.setStatus("待发货");
-					orderMapper.updateById(order);
+				if ("已收货".equals(order.getStatus()) || "申请退货".equals(order.getStatus()) || "已取消".equals(order.getStatus())) {
+					throw new RuntimeException("单据已收货或申请售后中,操作失败");
 				}
+				order.setVersion(order.getVersion() + 1);
+				order.setStatus("待发货");
+				orderMapper.updateById(order);
 			}
 			shipItemsService.removeByIds(shipItemsList.stream().map(PjShipItems::getId).collect(Collectors.toList()));
 		}

+ 141 - 0
blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/goods/controller/ShopAppBrandDescController.java

@@ -0,0 +1,141 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package com.gubersail.shop.app.goods.controller;
+
+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.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.gubersail.shop.app.api.corps.entity.ShopAppPjCorpsDesc;
+import com.gubersail.shop.app.api.goods.entity.ShopAppBrandDesc;
+import com.gubersail.shop.app.api.goods.entity.ShopAppBrandFiles;
+import com.gubersail.shop.app.goods.service.IShopAppBrandDescService;
+import com.gubersail.shop.app.goods.service.IShopAppBrandFilesService;
+import com.gubersail.shop.app.goods.service.IShopAppGoodsDescService;
+import com.gubersail.shop.app.util.UserUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.common.annotation.RepeatSubmit;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 配件批发品牌表控制器
+ *
+ * @author BladeX
+ * @since 2023-04-24
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/brandDesc")
+@Api(value = "配件批发品牌", tags = "配件批发品牌接口")
+public class ShopAppBrandDescController extends BladeController {
+
+	private final IShopAppBrandDescService brandDescService;
+
+	private final IShopAppBrandFilesService brandFilesService;
+
+	/**
+	 * 品牌下拉
+	 */
+	@GetMapping("/listAllApp")
+	@ApiOperationSupport(order = 10)
+	@ApiOperation(value = "品牌下拉", notes = "传入brandDesc")
+	public R<List<ShopAppBrandDesc>> listAllApp(ShopAppBrandDesc brandDesc) {
+		ShopAppPjCorpsDesc corpsDesc = UserUtils.getUserCorpsDesc();
+		LambdaQueryWrapper<ShopAppBrandDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(ShopAppBrandDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(ShopAppBrandDesc::getIsDeleted, 0)
+			.eq(ShopAppBrandDesc::getType, "PP")
+			.eq(ShopAppBrandDesc::getEnableOrNot, 1)
+			.eq(ObjectUtils.isNotNull(brandDesc.getWhetherIntegral()), ShopAppBrandDesc::getWhetherIntegral, brandDesc.getWhetherIntegral())
+			.like(ObjectUtils.isNotEmpty(brandDesc.getCname()), ShopAppBrandDesc::getCname, brandDesc.getCname())
+			.orderByDesc(ShopAppBrandDesc::getSort);
+		if (ObjectUtils.isNotNull(corpsDesc.getBrandId())) {
+			lambdaQueryWrapper.apply("find_in_set(id,'" + corpsDesc.getBrandId() + "')");
+		}
+		List<ShopAppBrandDesc> list = brandDescService.list(lambdaQueryWrapper);
+		if (ObjectUtil.isNotEmpty(list)) {
+			list.forEach(e -> {
+				//获取附件
+				e.setBrandFilesList(brandFilesService.list(new QueryWrapper<ShopAppBrandFiles>().eq("pid", e.getId()).eq("is_deleted", 0)
+					.eq("version", 0)));
+			});
+		}
+		return R.data(list);
+	}
+
+	/**
+	 * 品牌下拉V1
+	 */
+	@GetMapping("/listAllAppV1")
+	public R<List<ShopAppBrandDesc>> listAllAppV1(ShopAppBrandDesc brandDesc) {
+		ShopAppPjCorpsDesc corpsDesc = UserUtils.getUserCorpsDesc();
+		LambdaQueryWrapper<ShopAppBrandDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(ShopAppBrandDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(ShopAppBrandDesc::getIsDeleted, 0)
+			.eq(ShopAppBrandDesc::getType, "PP")
+			.eq(ShopAppBrandDesc::getEnableOrNot, 1)
+			.eq(ObjectUtils.isNotNull(brandDesc.getWhetherIntegral()), ShopAppBrandDesc::getWhetherIntegral, brandDesc.getWhetherIntegral())
+			.like(ObjectUtils.isNotEmpty(brandDesc.getCname()), ShopAppBrandDesc::getCname, brandDesc.getCname())
+			.orderByDesc(ShopAppBrandDesc::getSort);
+		if (ObjectUtils.isNotNull(corpsDesc.getBrandId())) {
+			lambdaQueryWrapper.apply("find_in_set(id,'" + corpsDesc.getBrandId() + "')");
+		}
+		List<ShopAppBrandDesc> list = brandDescService.list(lambdaQueryWrapper);
+		if (!list.isEmpty()) {
+			List<Long> idList = list.stream().map(ShopAppBrandDesc::getId).collect(Collectors.toList());
+			List<ShopAppBrandFiles> brandFilesList = brandFilesService.list(new LambdaQueryWrapper<ShopAppBrandFiles>()
+				.eq(ShopAppBrandFiles::getTenantId, AuthUtil.getTenantId())
+				.eq(ShopAppBrandFiles::getIsDeleted, 0)
+				.in(ShopAppBrandFiles::getPid, idList)
+				.eq(ShopAppBrandFiles::getVersion, 0));
+			for (ShopAppBrandDesc item : list) {
+				if (!brandFilesList.isEmpty()) {
+					List<ShopAppBrandFiles> brandFiles = brandFilesList.stream().filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
+					if (!brandFiles.isEmpty()) {
+						item.setBrandFilesList(brandFiles);
+					} else {
+						item.setBrandFilesList(new ArrayList<>());
+					}
+				} else {
+					item.setBrandFilesList(new ArrayList<>());
+				}
+			}
+		}
+		return R.data(list);
+	}
+
+}

+ 0 - 221
blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/order/controller/OrderController.java

@@ -1,221 +0,0 @@
-package com.gubersail.shop.app.order.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-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.plugins.pagination.Page;
-import com.gubersail.shop.app.api.order.entity.ShopAppOrder;
-import com.gubersail.shop.app.api.order.entity.ShopAppOrderItems;
-import com.gubersail.shop.app.api.order.vo.ShopAppOrderVO;
-import com.gubersail.shop.app.order.service.IShopAppOrderItemsService;
-import com.gubersail.shop.app.order.service.IShopAppOrderService;
-import com.gubersail.shop.app.util.DeptUtils;
-import com.gubersail.shop.app.wrapper.ShopAppOrderWrapper;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiParam;
-import lombok.AllArgsConstructor;
-import org.springblade.common.annotation.RepeatSubmit;
-import org.springblade.core.boot.ctrl.BladeController;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.ObjectUtil;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.feign.IUserClient;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/**
- * 配件销售采购表 控制器
- *
- * @author BladeX
- * @since 2023-04-21
- */
-@RestController
-@AllArgsConstructor
-@RequestMapping("/order")
-@Api(value = "配件销售采购表", tags = "配件销售采购表接口")
-public class OrderController extends BladeController {
-
-	private final IShopAppOrderService orderService;
-
-	private final IShopAppOrderItemsService orderItemsService;
-
-	private final IUserClient iUserClient;
-
-
-	/**
-	 * 销售详情
-	 */
-	@GetMapping("/detail")
-	public R<ShopAppOrderVO> detail(ShopAppOrder order) {
-		order.setTenantId(AuthUtil.getTenantId());
-		ShopAppOrderVO detail = orderService.getMessageById(order);
-		return R.data(detail);
-	}
-
-	/**
-	 * 分页 配件销售
-	 */
-	@GetMapping("/list")
-	public R<IPage<ShopAppOrderVO>> list(ShopAppOrderVO order, Query query) {
-		LambdaQueryWrapper<ShopAppOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(ShopAppOrder::getTenantId, AuthUtil.getTenantId())
-			.eq(ShopAppOrder::getIsDeleted, 0)
-			.eq(ShopAppOrder::getBsType, order.getBsType())
-			.eq(ObjectUtils.isNotEmpty(order.getBillType()), ShopAppOrder::getBillType, order.getBillType())
-			.eq(ObjectUtils.isNotEmpty(order.getStorageId()), ShopAppOrder::getStorageId, order.getStorageId())//仓库
-			.eq(ObjectUtils.isNotEmpty(order.getReturnsStatus()), ShopAppOrder::getReturnsStatus, order.getReturnsStatus())//退货状态
-			.like(ObjectUtils.isNotEmpty(order.getStorageName()), ShopAppOrder::getStorageName, order.getStorageName())
-			.like(ObjectUtils.isNotEmpty(order.getSalerName()), ShopAppOrder::getSalerName, order.getSalerName())
-			.eq(ObjectUtils.isNotEmpty(order.getCustomerId()), ShopAppOrder::getCustomerId, order.getCustomerId())//客户
-			.eq(ObjectUtils.isNotEmpty(order.getGenerateTask()), ShopAppOrder::getGenerateTask, order.getGenerateTask())//客户
-			.eq(ObjectUtils.isNotEmpty(order.getSalerId()), ShopAppOrder::getSalerId, order.getSalerId())//业务员
-			.like(ObjectUtils.isNotEmpty(order.getCustomerName()), ShopAppOrder::getCustomerName, order.getCustomerName())
-			.like(ObjectUtils.isNotEmpty(order.getSrcOrdNo()), ShopAppOrder::getSrcOrdNo, order.getSrcOrdNo())//来源单号
-			.like(ObjectUtils.isNotEmpty(order.getOrdNo()), ShopAppOrder::getOrdNo, order.getOrdNo())//来源单号
-			.like(ObjectUtils.isNotEmpty(order.getRefno()), ShopAppOrder::getRefno, order.getRefno())//参考号
-			.like(ObjectUtils.isNotEmpty(order.getGoodsNameJoin()), ShopAppOrder::getGoodsNameJoin, order.getGoodsNameJoin())//来源单号
-			.like(ObjectUtils.isNotEmpty(order.getBusinessSource()), ShopAppOrder::getBusinessSource, order.getBusinessSource())//来源
-			// 资金方
-			.like(StringUtil.isNotBlank(order.getFundingPartyName()), ShopAppOrder::getFundingPartyName, order.getFundingPartyName())
-			// zh状态
-			.eq(StringUtil.isNotBlank(order.getWhetherRedeem()), ShopAppOrder::getWhetherRedeem, order.getWhetherRedeem());
-		if (order.getDueDateList() != null && order.getDueDateList().size() > 1) {//应结日期
-			lambdaQueryWrapper.ge(ShopAppOrder::getDueDate, order.getDueDateList().get(0));
-			lambdaQueryWrapper.le(ShopAppOrder::getDueDate, order.getDueDateList().get(1));
-		}
-		if (order.getBusinesDateList() != null && order.getBusinesDateList().size() > 1) {//业务日期
-			lambdaQueryWrapper.ge(ShopAppOrder::getBusinesDate, order.getBusinesDateList().get(0));
-			lambdaQueryWrapper.le(ShopAppOrder::getBusinesDate, order.getBusinesDateList().get(1));
-		}
-		if (order.getDeliveryBusinesDateList() != null && order.getDeliveryBusinesDateList().size() > 1) {//出库日期
-			lambdaQueryWrapper.ge(ShopAppOrder::getDeliveryBusinesDate, order.getDeliveryBusinesDateList().get(0));
-			lambdaQueryWrapper.le(ShopAppOrder::getDeliveryBusinesDate, order.getDeliveryBusinesDateList().get(1));
-		}
-		if (order.getPaymentDateList() != null && order.getPaymentDateList().size() > 1) {//支付时间
-			lambdaQueryWrapper.ge(ShopAppOrder::getPaymentDate, order.getPaymentDateList().get(0));
-			lambdaQueryWrapper.le(ShopAppOrder::getPaymentDate, order.getPaymentDateList().get(1));
-		}
-		if (ObjectUtils.isNotNull(order.getActualPaymentType())) {
-			lambdaQueryWrapper.eq(ShopAppOrder::getActualPaymentStatus, order.getActualPaymentType());
-		} else {
-			lambdaQueryWrapper.ne(ObjectUtils.isNotEmpty(order.getActualPaymentStatus()), ShopAppOrder::getActualPaymentStatus, order.getActualPaymentStatus());//来源单号
-		}
-		if (ObjectUtils.isNull(order.getNotComplete())) {
-			if (ObjectUtils.isNotEmpty(order.getStatus())) {
-				lambdaQueryWrapper.apply("find_in_set(status,'" + order.getStatus() + "')");
-			} else {
-				lambdaQueryWrapper.apply("not find_in_set(status,'已发货,已收货,已取消')");
-			}
-		} else {
-			lambdaQueryWrapper.apply(ObjectUtils.isNotEmpty(order.getStatus()), "find_in_set(status,'" + order.getStatus() + "')");
-		}
-		lambdaQueryWrapper.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) )" +
-			" OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
-			" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))");
-		lambdaQueryWrapper.orderByDesc(ShopAppOrder::getCreateTime);
-		if (!AuthUtil.getUserRole().contains("admin")) {
-			List<Long> deptIdList = DeptUtils.getUserFirstDeptId(Long.valueOf(AuthUtil.getDeptId()));
-			deptIdList.add(Long.valueOf(AuthUtil.getDeptId()));
-			lambdaQueryWrapper.in(ShopAppOrder::getCreateDept, deptIdList);
-		}
-		IPage<ShopAppOrder> pages = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
-		IPage<ShopAppOrderVO> voPage = new Page<>();
-		if (CollectionUtils.isNotEmpty(pages.getRecords())) {
-			voPage = ShopAppOrderWrapper.build().pageVO(pages);
-			List<Long> userIds = new ArrayList<>();
-			List<Long> createUser = pages.getRecords().stream().map(ShopAppOrder::getCreateUser).filter(Objects::nonNull).distinct().collect(Collectors.toList());
-			if (!createUser.isEmpty()) {
-				userIds.addAll(createUser);
-			}
-			List<Long> updateUser = pages.getRecords().stream().map(ShopAppOrder::getUpdateUser).filter(Objects::nonNull).filter(id -> !userIds.contains(id)).collect(Collectors.toList());
-			if (!updateUser.isEmpty()) {
-				userIds.addAll(updateUser);
-			}
-			StringBuilder user = new StringBuilder();
-			List<User> userList = new ArrayList<>();
-			for (Long item : userIds) {
-				user.append(item).append(",");
-			}
-			if (ObjectUtils.isNotNull(user.toString())) {
-				userList = iUserClient.selectUserList(user.substring(0, user.length() - 1));
-			}
-			List<Long> ids = pages.getRecords().stream().map(ShopAppOrder::getId).collect(Collectors.toList());
-			List<ShopAppOrderItems> pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<ShopAppOrderItems>().eq(ShopAppOrderItems::getIsDeleted, 0)
-				.in(ShopAppOrderItems::getPid, ids));
-			for (ShopAppOrderVO item : voPage.getRecords()) {
-				if (ObjectUtil.isNotEmpty(userList)) {
-					if (ObjectUtils.isNotNull(item.getUpdateUser())) {
-						userList.stream().filter(e -> e.getId().equals(item.getUpdateUser()))
-							.findFirst().ifPresent(users -> item.setUpdateUserName(users.getRealName()));
-					}
-					if (ObjectUtils.isNotNull(item.getCreateUser())) {
-						userList.stream().filter(e -> e.getId().equals(item.getCreateUser()))
-							.findFirst().ifPresent(users -> item.setCreateUserName(users.getRealName()));
-					}
-				}
-				if (item.getGoodsTotalNum().compareTo(item.getReturnsNumber()) == 0) {
-					item.setReturnsStatus("全退");
-				} else if (item.getGoodsTotalNum().compareTo(item.getReturnsNumber()) > 0 && new BigDecimal("0.00").compareTo(item.getReturnsNumber()) != 0) {
-					item.setReturnsStatus("部分");
-				} else {
-					item.setReturnsStatus("无");
-				}
-				if (!pjOrderItemsList.isEmpty()) {
-					long count = pjOrderItemsList.stream().filter(e -> e.getPid().equals(item.getId())).count();
-					item.setItem(count + "");
-					item.setNumberRows((int) count);
-				}
-				item.setSurplusShipNum(item.getGoodsTotalShipNum().subtract(item.getOutGoodsTotalShipNum()).subtract(item.getReturnsNumber()));
-				item.setSurplusShipAmount(item.getGoodsTotalShipAmount().subtract(item.getOutGoodsTotalShipAmount()).subtract(item.getReturnsAmount()));
-			}
-		}
-
-		return R.data(voPage);
-	}
-
-	/**
-	 * 配件销售新增或修改
-	 */
-	@PostMapping("/submit")
-	@RepeatSubmit
-	public R submit(@Valid @RequestBody ShopAppOrderVO order) {
-		if (StringUtils.isBlank(order.getBsType())) {
-			throw new RuntimeException("缺少必要参数");
-		}
-		return orderService.saveOrderMessage(order);
-	}
-
-
-	/**
-	 * 删除 配件销售采购表
-	 */
-	@PostMapping("/remove")
-	@RepeatSubmit
-	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-		List<Long> idList = Func.toLongList(ids);
-		List<ShopAppOrder> orderList = orderService.list(new LambdaQueryWrapper<ShopAppOrder>()
-			.eq(ShopAppOrder::getTenantId, AuthUtil.getTenantId())
-			.eq(ShopAppOrder::getIsDeleted, 0)
-			.in(ShopAppOrder::getId, idList));
-		for (ShopAppOrder item : orderList) {
-			if (1 == item.getBillType()) {
-				throw new RuntimeException("订单号:" + item.getOrdNo() + "为共享订单,删除失败");
-			}
-		}
-		return R.status(orderService.removeByIds(idList));
-	}
-
-}

+ 119 - 0
blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/order/controller/ShopAppOrderController.java

@@ -0,0 +1,119 @@
+package com.gubersail.shop.app.order.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.plugins.pagination.Page;
+import com.gubersail.shop.app.api.order.entity.ShopAppOrder;
+import com.gubersail.shop.app.api.order.vo.ShopAppOrderVO;
+import com.gubersail.shop.app.order.service.IShopAppOrderService;
+import com.gubersail.shop.app.util.DeptUtils;
+import com.gubersail.shop.app.wrapper.ShopAppOrderWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.common.annotation.RepeatSubmit;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 配件销售采购表 控制器
+ *
+ * @author BladeX
+ * @since 2023-04-21
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/order")
+@Api(value = "配件销售采购表", tags = "配件销售采购表接口")
+public class ShopAppOrderController extends BladeController {
+
+	private final IShopAppOrderService orderService;
+
+
+	/**
+	 * 销售详情
+	 */
+	@GetMapping("/detail")
+	public R<ShopAppOrderVO> detail(ShopAppOrder order) {
+		order.setTenantId(AuthUtil.getTenantId());
+		ShopAppOrderVO detail = orderService.getMessageById(order);
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 配件销售
+	 */
+	@GetMapping("/list")
+	public R<IPage<ShopAppOrderVO>> list(ShopAppOrderVO order, Query query) {
+		LambdaQueryWrapper<ShopAppOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(ShopAppOrder::getTenantId, AuthUtil.getTenantId())
+			.eq(ShopAppOrder::getIsDeleted, 0)
+			.eq(ShopAppOrder::getBsType, order.getBsType())
+			.eq(ObjectUtils.isNotEmpty(order.getBillType()), ShopAppOrder::getBillType, order.getBillType())
+			.like(ObjectUtils.isNotEmpty(order.getSrcOrdNo()), ShopAppOrder::getSrcOrdNo, order.getSrcOrdNo())//来源单号
+			.like(ObjectUtils.isNotEmpty(order.getOrdNo()), ShopAppOrder::getOrdNo, order.getOrdNo())//来源单号
+			.like(ObjectUtils.isNotEmpty(order.getGoodsNameJoin()), ShopAppOrder::getGoodsNameJoin, order.getGoodsNameJoin())//来源单号
+			.like(ObjectUtils.isNotEmpty(order.getBusinessSource()), ShopAppOrder::getBusinessSource, order.getBusinessSource());
+		if (order.getBusinesDateList() != null && order.getBusinesDateList().size() > 1) {//业务日期
+			lambdaQueryWrapper.ge(ShopAppOrder::getBusinesDate, order.getBusinesDateList().get(0));
+			lambdaQueryWrapper.le(ShopAppOrder::getBusinesDate, order.getBusinesDateList().get(1));
+		}
+		lambdaQueryWrapper.ne(ObjectUtils.isNotEmpty(order.getActualPaymentStatus()), ShopAppOrder::getActualPaymentStatus, order.getActualPaymentStatus());//来源单号
+		lambdaQueryWrapper.apply(ObjectUtils.isNotEmpty(order.getStatus()), "find_in_set(status,'" + order.getStatus() + "')");
+		lambdaQueryWrapper.orderByDesc(ShopAppOrder::getCreateTime);
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			if (!AuthUtil.getUserRole().contains("dealer")) {
+				lambdaQueryWrapper.eq(ShopAppOrder::getCreateUser, AuthUtil.getUserId());
+			} else {
+				List<Long> deptIdList = DeptUtils.getUserFirstDeptId(Long.valueOf(AuthUtil.getDeptId()));
+				deptIdList.add(Long.valueOf(AuthUtil.getDeptId()));
+				lambdaQueryWrapper.in(ShopAppOrder::getCreateDept, deptIdList);
+			}
+		}
+		IPage<ShopAppOrder> pages = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
+		IPage<ShopAppOrderVO> voPage = new Page<>();
+		if (CollectionUtils.isNotEmpty(pages.getRecords())) {
+			voPage = ShopAppOrderWrapper.build().pageVO(pages);
+			for (ShopAppOrderVO item : voPage.getRecords()) {
+				item.setSurplusShipNum(item.getGoodsTotalShipNum().subtract(item.getOutGoodsTotalShipNum()).subtract(item.getReturnsNumber()));
+				item.setSurplusShipAmount(item.getGoodsTotalShipAmount().subtract(item.getOutGoodsTotalShipAmount()).subtract(item.getReturnsAmount()));
+			}
+		}
+
+		return R.data(voPage);
+	}
+
+	/**
+	 * 配件销售新增或修改
+	 */
+	@PostMapping("/submit")
+	@RepeatSubmit
+	public R submit(@Valid @RequestBody ShopAppOrderVO order) {
+		if (StringUtils.isBlank(order.getBsType())) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		return orderService.saveOrderMessage(order);
+	}
+
+
+	/**
+	 * 删除 配件销售采购表
+	 */
+	@PostMapping("/remove")
+	@RepeatSubmit
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(orderService.removeByIds(Func.toLongList(ids)));
+	}
+
+}

+ 1 - 1
blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/shoppingCart/controller/ShoppingCartController.java → blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/shoppingCart/controller/ShopAppShoppingCartController.java

@@ -31,7 +31,7 @@ import java.util.List;
 @AllArgsConstructor
 @RequestMapping("/shoppingCart")
 @Api(value = "配件批发购物车", tags = "接口")
-public class ShoppingCartController extends BladeController {
+public class ShopAppShoppingCartController extends BladeController {
 
 	private final IShopAppShoppingCartService shoppingCartService;
 

+ 4 - 1
blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/shoppingCart/service/impl/ShopAppShoppingCartServiceImpl.java

@@ -154,6 +154,7 @@ public class ShopAppShoppingCartServiceImpl extends ServiceImpl<ShopAppShoppingC
 				orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
 				orderItems.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
 				orderItems.setGoodsName(item.getGoodsName());
+				orderItems.setUrl(item.getPicture());
 				orderItemsMapper.insert(orderItems);
 				ShopAppGoodsDesc goodsDesc = goodsDescMapper.selectById(orderItems.getGoodsId());
 				if (ObjectUtils.isNotNull(goodsDesc)) {
@@ -308,6 +309,7 @@ public class ShopAppShoppingCartServiceImpl extends ServiceImpl<ShopAppShoppingC
 				orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
 				orderItems.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
 				orderItems.setGoodsName(item.getGoodsName());
+				orderItems.setUrl(item.getPicture());
 				orderItemsMapper.insert(orderItems);
 				ShopAppGoodsDesc goodsDesc = goodsDescMapper.selectById(orderItems.getGoodsId());
 				if (ObjectUtils.isNotNull(goodsDesc)) {
@@ -449,6 +451,7 @@ public class ShopAppShoppingCartServiceImpl extends ServiceImpl<ShopAppShoppingC
 				orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
 				orderItems.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
 				orderItems.setGoodsName(item.getGoodsName());
+				orderItems.setUrl(item.getPicture());
 				orderItemsMapper.insert(orderItems);
 				ShopAppGoodsDesc goodsDesc = goodsDescMapper.selectById(orderItems.getGoodsId());
 				if (ObjectUtils.isNotNull(goodsDesc)) {
@@ -516,7 +519,7 @@ public class ShopAppShoppingCartServiceImpl extends ServiceImpl<ShopAppShoppingC
 		shoppingCart.setUnits(goodsDesc.getUnit());
 		shoppingCart.setBrandId(goodsDesc.getBrandId());
 		shoppingCart.setBrandName(goodsDesc.getBrandName());
-
+		shoppingCart.setPicture(stockDesc.getUrl());
 		shoppingCart.setGoodsNum(stockDesc.getGoodsNum());
 		shoppingCart.setPrice(stockDesc.getPrice());
 		shoppingCart.setProductLaunchId(stockDesc.getId());

+ 5 - 0
blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/stock/service/impl/ShopAppTireStockDescServiceImpl.java

@@ -80,10 +80,15 @@ public class ShopAppTireStockDescServiceImpl extends ServiceImpl<ShopAppTireStoc
 		lambdaQueryWrapper.eq(ShopAppTireStockDesc::getTenantId, AuthUtil.getTenantId())
 			.eq(ShopAppTireStockDesc::getIsDeleted, 0)
 			.eq(ObjectUtils.isNotNull(corpsDesc.getDeliveryWarehouseId()), ShopAppTireStockDesc::getStorageId, corpsDesc.getDeliveryWarehouseId())
+			.eq(ObjectUtils.isNotNull(stockDesc.getExplosionProof()), ShopAppTireStockDesc::getExplosionProof, stockDesc.getExplosionProof())
+			.eq(ObjectUtils.isNotNull(stockDesc.getOriginalFactory()), ShopAppTireStockDesc::getOriginalFactory, stockDesc.getOriginalFactory())
+			.eq(ObjectUtils.isNotNull(stockDesc.getSelfRecovery()), ShopAppTireStockDesc::getSelfRecovery, stockDesc.getSelfRecovery())
+			.eq(ObjectUtils.isNotNull(stockDesc.getBrandId()), ShopAppTireStockDesc::getBrandId, stockDesc.getBrandId())
 			.and(ObjectUtils.isNotNull(stockDesc.getSearchCriteria()), i -> i.like(ShopAppTireStockDesc::getCnameInt, stockDesc.getSearchCriteria()).or()
 				.like(ShopAppTireStockDesc::getCname, stockDesc.getSearchCriteria()).or()
 				.like(ShopAppTireStockDesc::getCode, stockDesc.getSearchCriteria()).or()
 				.like(ShopAppTireStockDesc::getTypeNo, stockDesc.getSearchCriteria()).or()
+				.like(ShopAppTireStockDesc::getBrandItem, stockDesc.getSearchCriteria()).or()
 				.like(ShopAppTireStockDesc::getBrandName, stockDesc.getSearchCriteria()))
 			.orderByDesc(ShopAppTireStockDesc::getBalanceQuantity);
 		if (!AuthUtil.getUserRole().contains("admin")) {