浏览代码

2023年6月20日16:01:07

纪新园 2 年之前
父节点
当前提交
506db20e74
共有 16 个文件被更改,包括 544 次插入150 次删除
  1. 115 106
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjGoodsDesc.java
  2. 12 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjStockDesc.java
  3. 4 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/enums/OrderTypeEnum.java
  4. 1 1
      blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java
  5. 75 31
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java
  6. 13 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java
  7. 8 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderService.java
  8. 45 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  9. 20 5
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/controller/ProductLaunchController.java
  10. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/service/IProductLaunchService.java
  11. 156 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/service/impl/ProductLaunchServiceImpl.java
  12. 23 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/stock/controller/StockDescController.java
  13. 2 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/stock/mapper/StockDescMapper.java
  14. 67 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/stock/mapper/StockDescMapper.xml
  15. 1 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/stock/service/IStockDescService.java
  16. 1 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/stock/service/impl/StockDescServiceImpl.java

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

@@ -16,19 +16,17 @@
  */
 package org.springblade.salesPart.entity;
 
-import java.math.BigDecimal;
-
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
-import lombok.Data;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-
 /**
  * 配件批发商品表实体类
  *
@@ -43,10 +41,10 @@ public class PjGoodsDesc implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	/**
-	* 主键
-	*/
-		@ApiModelProperty(value = "主键")
-		private Long id;
+	 * 主键
+	 */
+	@ApiModelProperty(value = "主键")
+	private Long id;
 	/**
 	 * 租户id
 	 */
@@ -54,70 +52,70 @@ public class PjGoodsDesc implements Serializable {
 	private String tenantId;
 
 	/**
-	* 创建人
-	*/
-		@ApiModelProperty(value = "创建人")
-		private Long createUser;
-	/**
-	* 创建部门
-	*/
-		@ApiModelProperty(value = "创建部门")
-		private Long createDept;
-	/**
-	* 创建时间
-	*/
-		@ApiModelProperty(value = "创建时间")
-		private Date createTime;
-	/**
-	* 修改人
-	*/
-		@ApiModelProperty(value = "修改人")
-		private Long updateUser;
-	/**
-	* 修改时间
-	*/
-		@ApiModelProperty(value = "修改时间")
-		private Date updateTime;
-	/**
-	* 是否已删除(0 否 1是)
-	*/
-		@ApiModelProperty(value = "是否已删除(0 否 1是)")
-		private Integer isDeleted;
-	/**
-	* 备注
-	*/
-		@ApiModelProperty(value = "备注")
-		private String remarks;
-	/**
-	* 订单状态
-	*/
-		@ApiModelProperty(value = "订单状态")
-		private String status;
-	/**
-	* 商品编码
-	*/
-		@ApiModelProperty(value = "商品编码")
-		private String code;
-	/**
-	* 商品名称
-	*/
-		@ApiModelProperty(value = "商品名称")
-		private String cname;
-	/**
-	* 商品类型id
-	*/
-		@ApiModelProperty(value = "商品类型id")
-		private String goodsTypeId;
-	/**
-	* 计量单位
-	*/
-		@ApiModelProperty(value = "计量单位")
-		private String unit;
-	/**
-	* 品牌id
-	*/
-		@ApiModelProperty(value = "品牌id")
-		private Long brandId;
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private Long createUser;
+	/**
+	 * 创建部门
+	 */
+	@ApiModelProperty(value = "创建部门")
+	private Long createDept;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 * 修改人
+	 */
+	@ApiModelProperty(value = "修改人")
+	private Long updateUser;
+	/**
+	 * 修改时间
+	 */
+	@ApiModelProperty(value = "修改时间")
+	private Date updateTime;
+	/**
+	 * 是否已删除(0 否 1是)
+	 */
+	@ApiModelProperty(value = "是否已删除(0 否 1是)")
+	private Integer isDeleted;
+	/**
+	 * 备注
+	 */
+	@ApiModelProperty(value = "备注")
+	private String remarks;
+	/**
+	 * 订单状态
+	 */
+	@ApiModelProperty(value = "订单状态")
+	private String status;
+	/**
+	 * 商品编码
+	 */
+	@ApiModelProperty(value = "商品编码")
+	private String code;
+	/**
+	 * 商品名称
+	 */
+	@ApiModelProperty(value = "商品名称")
+	private String cname;
+	/**
+	 * 商品类型id
+	 */
+	@ApiModelProperty(value = "商品类型id")
+	private String goodsTypeId;
+	/**
+	 * 计量单位
+	 */
+	@ApiModelProperty(value = "计量单位")
+	private String unit;
+	/**
+	 * 品牌id
+	 */
+	@ApiModelProperty(value = "品牌id")
+	private Long brandId;
 
 	/**
 	 * 品牌名称
@@ -126,46 +124,46 @@ public class PjGoodsDesc implements Serializable {
 	private String brandName;
 
 	/**
-	* 是否管理批次号  0否1是
-	*/
-		@ApiModelProperty(value = "是否管理批次号  0否1是")
-		private String whether;
+	 * 是否管理批次号  0否1是
+	 */
+	@ApiModelProperty(value = "是否管理批次号  0否1是")
+	private String whether;
 	/**
-	* 规格型号
-	*/
-		@ApiModelProperty(value = "规格型号")
-		private String specificationAndModel;
+	 * 规格型号
+	 */
+	@ApiModelProperty(value = "规格型号")
+	private String specificationAndModel;
 	/**
-	* 花纹
-	*/
-		@ApiModelProperty(value = "花纹")
-		private String brandItem;
+	 * 花纹
+	 */
+	@ApiModelProperty(value = "花纹")
+	private String brandItem;
 	/**
-	* 产地
-	*/
-		@ApiModelProperty(value = "产地")
-		private String placeProduction;
+	 * 产地
+	 */
+	@ApiModelProperty(value = "产地")
+	private String placeProduction;
 	/**
-	* 供应商
-	*/
-		@ApiModelProperty(value = "供应商")
-		private Long corpId;
+	 * 供应商
+	 */
+	@ApiModelProperty(value = "供应商")
+	private Long corpId;
 	/**
-	* 供应商名称
-	*/
-		@ApiModelProperty(value = "供应商名称")
-		private String corpName;
+	 * 供应商名称
+	 */
+	@ApiModelProperty(value = "供应商名称")
+	private String corpName;
 	/**
-	* 产品名称提取数字
-	*/
-		@ApiModelProperty(value = "产品名称提取数字")
-		private String cnameInt;
+	 * 产品名称提取数字
+	 */
+	@ApiModelProperty(value = "产品名称提取数字")
+	private String cnameInt;
 
 	/**
-	* 是否启用(0启用,1停用)
-	*/
-		@ApiModelProperty(value = "是否启用(0启用,1停用)")
-		private Integer enableOrNot;
+	 * 是否启用(0启用,1停用)
+	 */
+	@ApiModelProperty(value = "是否启用(0启用,1停用)")
+	private Integer enableOrNot;
 	/**
 	 * 商品描述
 	 */
@@ -225,4 +223,15 @@ public class PjGoodsDesc implements Serializable {
 	@TableField(exist = false)
 	private Integer modifiable;
 
+	/**
+	 * 客户id
+	 */
+	@TableField(exist = false)
+	private Long customId;
+	/**
+	 * 售价
+	 */
+	@TableField(exist = false)
+	private BigDecimal price;
+
 }

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

@@ -17,9 +17,12 @@
 package org.springblade.salesPart.entity;
 
 import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -164,6 +167,12 @@ public class PjStockDesc implements Serializable {
 	*/
 		@ApiModelProperty(value = "所属公司id")
 		private Long salesCompanyId;
+
+	/**
+	 * 所属公司id
+	 */
+	@TableField(exist = false)
+	private String salesCompanyIds;
 	/**
 	* 所属公司名称
 	*/
@@ -200,4 +209,7 @@ public class PjStockDesc implements Serializable {
 	@ApiModelProperty(value = "库存预警")
 	private Integer inventoryAlert;
 
+	@TableField(exist = false)
+	private List<Long> goodsIds;
+
 }

+ 4 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/enums/OrderTypeEnum.java

@@ -42,6 +42,10 @@ public enum OrderTypeEnum {
 	 * 已生成任务
 	 */
 	SCRW("已生成"),
+	/**
+	 * 未生成任务
+	 */
+	NSCRW("未生成"),
 
 	/**
 	 * 发货任务

+ 1 - 1
blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java

@@ -301,7 +301,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 					);
 				}else if ("退款审批".equals(auditProecessDTO.getProcessType())) {
 					message.setMessageBody("您有新的售后审核,客户名:" + corpName + "," + "订单号:" +
-						"" + auditProecessDTO.getBillNo() + "," + "订单金额:" + auditProecessDTO.getAmount() + ",请审核。"
+						"" + auditProecessDTO.getBillNo() + ",请审核。"
 						+ " 提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
 					);
 				}

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

@@ -16,22 +16,17 @@
  */
 package org.springblade.salesPart.goods.controller;
 
-import com.alibaba.csp.sentinel.util.StringUtil;
 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.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-
-import org.springblade.client.entity.GoodsDesc;
-import org.springblade.client.entity.GoodsType;
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -41,20 +36,22 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
-import org.springblade.salesPart.entity.*;
-import org.springblade.salesPart.excel.CorpsDescExportExcel;
+import org.springblade.salesPart.corps.service.ICorpsDescService;
+import org.springblade.salesPart.entity.PjCorpsDesc;
+import org.springblade.salesPart.entity.PjGoodsDesc;
+import org.springblade.salesPart.entity.PjGoodsType;
+import org.springblade.salesPart.entity.PjProductLaunch;
 import org.springblade.salesPart.excel.GoodsDescExportExcel;
 import org.springblade.salesPart.excel.GoodsExcel;
+import org.springblade.salesPart.goods.service.IGoodsDescService;
 import org.springblade.salesPart.goods.service.IGoodsTypeService;
-import org.springblade.system.entity.Dept;
-import org.springblade.system.feign.ISysClient;
-import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.salesPart.productLaunch.service.IProductLaunchService;
 import org.springblade.salesPart.vo.GoodsDescVO;
-import org.springblade.salesPart.goods.service.IGoodsDescService;
-import org.springblade.core.boot.ctrl.BladeController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -72,11 +69,10 @@ import java.util.stream.Collectors;
 @Api(value = "配件批发商品表", tags = "配件批发商品表接口")
 public class GoodsDescController extends BladeController {
 
-	private final IGoodsDescService goodsService;
+	private final ICorpsDescService corpsDescService;
 	private final IGoodsTypeService goodsDescType;
 	private final IGoodsDescService goodsDescService;
-
-	private final ISysClient iSysClient;
+	private final IProductLaunchService productLaunchService;
 
 	/**
 	 * 详情
@@ -86,7 +82,7 @@ public class GoodsDescController extends BladeController {
 	@ApiOperation(value = "详情", notes = "传入goods")
 	public R<PjGoodsDesc> detail(PjGoodsDesc goods) {
 		goods.setTenantId(AuthUtil.getTenantId());
-		PjGoodsDesc detail = goodsService.getMessageById(goods);
+		PjGoodsDesc detail = goodsDescService.getMessageById(goods);
 		return R.data(detail);
 	}
 
@@ -119,11 +115,11 @@ public class GoodsDescController extends BladeController {
 			.like(ObjectUtils.isNotEmpty(goods.getCode()), PjGoodsDesc::getCode, goods.getCode())//编码
 			.eq(ObjectUtils.isNotEmpty(goods.getWhether()), PjGoodsDesc::getWhether, goods.getWhether())//是否管理到批次号
 			.eq(ObjectUtils.isNotEmpty(goods.getExplosionProof()), PjGoodsDesc::getExplosionProof, goods.getExplosionProof());//是否防爆
-		if (ObjectUtil.isNotEmpty(goods.getCname())){
+		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 = goodsService.page(Condition.getPage(query),lambdaQueryWrapper);
+		IPage<PjGoodsDesc> pages = goodsDescService.page(Condition.getPage(query), lambdaQueryWrapper);
 
 		pages.getRecords().forEach(e -> {
 			String typeId = e.getGoodsTypeId();
@@ -150,7 +146,7 @@ public class GoodsDescController extends BladeController {
 	public R<IPage<GoodsDescVO>> page(GoodsDescVO goods, Query query) {
 		goods.setTenantId(SecureUtil.getTenantId());
 		goods.setIsDeleted(0);
-		IPage<GoodsDescVO> pages = goodsService.selectGoodsPage(Condition.getPage(query), goods);
+		IPage<GoodsDescVO> pages = goodsDescService.selectGoodsPage(Condition.getPage(query), goods);
 		return R.data(pages);
 	}
 
@@ -213,7 +209,7 @@ public class GoodsDescController extends BladeController {
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "删除", notes = "传入ids")
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-		return R.status(goodsService.removeByIds(Func.toLongList(ids)));
+		return R.status(goodsDescService.removeByIds(Func.toLongList(ids)));
 	}
 
 	/**
@@ -269,10 +265,10 @@ public class GoodsDescController extends BladeController {
 			.eq(ObjectUtils.isNotEmpty(goods.getSalesCompanyId()), PjGoodsDesc::getSalesCompanyId, goods.getSalesCompanyId())//所属公司
 			.eq(ObjectUtils.isNotEmpty(goods.getWhether()), PjGoodsDesc::getWhether, goods.getWhether())//是否管理到批次号
 			.eq(ObjectUtils.isNotEmpty(goods.getExplosionProof()), PjGoodsDesc::getExplosionProof, goods.getExplosionProof());//是否防爆
-		if (ObjectUtil.isNotEmpty(goods.getCname())){
+		if (ObjectUtil.isNotEmpty(goods.getCname())) {
 			lambdaQueryWrapper.and(i -> i.like(PjGoodsDesc::getCname, goods.getCname()).or().like(PjGoodsDesc::getCnameInt, goods.getCname()));
 		}
-		List<PjGoodsDesc> list = goodsService.list(lambdaQueryWrapper);
+		List<PjGoodsDesc> list = goodsDescService.list(lambdaQueryWrapper);
 		list.forEach(e -> {
 			String typeId = e.getGoodsTypeId();
 			String[] split = typeId.split(",");
@@ -294,8 +290,8 @@ public class GoodsDescController extends BladeController {
 	@GetMapping("/updateEnableOrNot")
 	@ApiOperationSupport(order = 11)
 	@ApiOperation(value = "启用禁用", notes = "传入goodsDesc")
-	public R updateEnableOrNot(PjGoodsDesc goodsDesc){
-		if (goodsDesc.getId() == null){
+	public R updateEnableOrNot(PjGoodsDesc goodsDesc) {
+		if (goodsDesc.getId() == null) {
 			return R.fail(500, "请选择数据");
 		}
 		boolean status = goodsDescService.updateById(goodsDesc);
@@ -312,14 +308,62 @@ public class GoodsDescController extends BladeController {
 		LambdaQueryWrapper<PjGoodsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
 			.eq(PjGoodsDesc::getIsDeleted, 0);
-		if (ObjectUtil.isNotEmpty(goods.getCname())){//商品名称
+		if (ObjectUtil.isNotEmpty(goods.getCname())) {//商品名称
 			lambdaQueryWrapper.and(i -> i.like(PjGoodsDesc::getCname, goods.getCname()).or().like(PjGoodsDesc::getCnameInt, goods.getCname()));
 		}
-		List<PjGoodsDesc> list = goodsService.list(lambdaQueryWrapper);
+		List<PjGoodsDesc> list = goodsDescService.list(lambdaQueryWrapper);
 
 		return R.data(list);
 	}
 
+
+	/**
+	 * 商品下拉 配件批发商品表
+	 */
+	@GetMapping("/goodsListXs")
+	@ApiOperationSupport(order = 12)
+	@ApiOperation(value = "商品下拉", notes = "传入goods")
+	public R<List<PjGoodsDesc>> goodsListXs(PjGoodsDesc goods) {
+
+		List<PjProductLaunch> pjProductLaunchList = productLaunchService.list(new LambdaQueryWrapper<PjProductLaunch>()
+			.eq(PjProductLaunch::getIsDeleted, 0)
+			.ne(PjProductLaunch::getInventory, 0)
+			.eq(PjProductLaunch::getUpAndDownShelves, 1)
+			.apply("find_in_set(sales_company_id,'" + AuthUtil.getDeptId() + "')")
+			.apply("find_in_set('" + AuthUtil.getDeptId() + "',shared_company)"));
+		List<Long> ids = pjProductLaunchList.stream().map(PjProductLaunch::getGoodsId).distinct().collect(Collectors.toList());
+		PjCorpsDesc pjCorpsDesc = corpsDescService.getById(goods.getCustomId());
+		String priceSystem = "";
+		if (ObjectUtils.isNotNull(pjCorpsDesc)){
+			priceSystem = pjCorpsDesc.getPriceSystem();
+		}
+		LambdaQueryWrapper<PjGoodsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjGoodsDesc::getIsDeleted, 0);
+		if (ObjectUtil.isNotEmpty(goods.getCname())) {//商品名称
+			lambdaQueryWrapper.and(i -> i.like(PjGoodsDesc::getCname, goods.getCname()).or().like(PjGoodsDesc::getCnameInt, goods.getCname()));
+		}
+		if (ObjectUtils.isNotNull(ids) && ids.size() > 0) {
+			lambdaQueryWrapper.in(PjGoodsDesc::getId, ids);
+		}
+		List<PjGoodsDesc> list = goodsDescService.list(lambdaQueryWrapper);
+		for (PjGoodsDesc item : list) {
+			PjProductLaunch pjProductLaunch = pjProductLaunchList.stream().filter(e-> e.getGoodsId().equals(item.getId())).findFirst().orElse(new PjProductLaunch());
+			if (ObjectUtils.isNotNull(pjProductLaunch)){
+				if ("售价1".equals(priceSystem)){
+					item.setPrice(pjProductLaunch.getPriceOne());
+				}else if ("售价2".equals(priceSystem)){
+					item.setPrice(pjProductLaunch.getPriceTwo());
+				}else if ("售价3".equals(priceSystem)){
+					item.setPrice(pjProductLaunch.getPriceThree());
+				}else if ("售价4".equals(priceSystem)){
+					item.setPrice(pjProductLaunch.getPriceFour());
+				}
+			}
+		}
+		return R.data(list);
+	}
+
 	/**
 	 * 递归查询ID
 	 */
@@ -342,7 +386,7 @@ public class GoodsDescController extends BladeController {
 	@ApiOperation(value = "详情", notes = "传入goods")
 	public R<PjGoodsDesc> goodsDetail(PjGoodsDesc goods) {
 		goods.setTenantId(AuthUtil.getTenantId());
-		PjGoodsDesc detail = goodsService.getGoodsDetail(goods);
+		PjGoodsDesc detail = goodsDescService.getGoodsDetail(goods);
 		return R.data(detail);
 	}
 }

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

@@ -230,6 +230,19 @@ public class OrderController extends BladeController {
 	}
 
 	/**
+	 * 撤销出库任务
+	 */
+	@PostMapping("/revokeGenerateShipTask")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "生成出库任务", notes = "传入order")
+	public R revokeGenerateShipTask(@Valid @RequestBody PjOrder order) {
+		if (order.getId() == null) {
+			throw new RuntimeException("来源信息错误");
+		}
+		return orderService.revokeGenerateShipTask(order);
+	}
+
+	/**
 	 * 生成入库任务
 	 */
 	@PostMapping("/inboundTask")

+ 8 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderService.java

@@ -64,6 +64,14 @@ public interface IOrderService extends IService<PjOrder> {
 	R generateShipTask(PjOrder order);
 
 	/**
+	 * 撤销出库任务
+	 *
+	 * @param order
+	 * @return
+	 */
+	R revokeGenerateShipTask(PjOrder order);
+
+	/**
 	 * 生成入库任务
 	 *
 	 * @param order

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

@@ -436,6 +436,50 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		return R.success("操作成功");
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
+	public R revokeGenerateShipTask(PjOrder order) {
+		PjOrder pjOrder = baseMapper.selectById(order.getId());
+		PjShip pjShip =shipMapper.selectOne(new LambdaQueryWrapper<PjShip>().eq(PjShip::getIsDeleted,0).eq(PjShip::getOrdId,order.getId()));
+		if (ObjectUtils.isNotNull(pjShip) && (ObjectUtils.isNull(pjShip.getSendTotalNum()) || new BigDecimal("0.00").compareTo(pjShip.getSendTotalNum()) == 0)){
+			shipMapper.deleteById(pjShip.getId());
+			shipMapper.deleteById(pjShip.getTaskId());
+		}else{
+			throw new RuntimeException("出库已完成,禁止撤销!");
+		}
+		//修改销售状态为待发货
+		pjOrder.setStatus(OrderTypeEnum.XSDQR.getType());
+		pjOrder.setGenerateTask(OrderTypeEnum.NSCRW.getType());
+		baseMapper.updateById(pjOrder);
+
+		//内部销售修改上架管理的库存
+		if (pjOrder.getBusinessSource().equals(OrderTypeEnum.WEB.getType())) {
+			LambdaQueryWrapper<PjOrderItems> itemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			itemsLambdaQueryWrapper.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrderItems::getIsDeleted, 0)
+				.eq(PjOrderItems::getPid, pjOrder.getId());
+			List<PjOrderItems> itemsList = orderItemsMapper.selectList(itemsLambdaQueryWrapper);
+			if (ObjectUtil.isNotEmpty(itemsList)) {
+				itemsList.forEach(e -> {
+					LambdaQueryWrapper<PjProductLaunch> queryWrapper = new LambdaQueryWrapper<>();
+					queryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
+						.eq(PjProductLaunch::getIsDeleted, 0)
+						.and(i -> i.eq(PjProductLaunch::getSalesCompanyId, pjOrder.getSalesCompanyId()).or().in(PjProductLaunch::getSourceCompanyId, pjOrder.getSalesCompanyId()))
+						.eq(PjProductLaunch::getGoodsId, e.getGoodsId());
+					List<PjProductLaunch> launchList = productLaunchMapper.selectList(queryWrapper);
+					if (ObjectUtil.isNotEmpty(launchList)) {
+						launchList.forEach(productLaunch -> {
+							productLaunch.setInventory(productLaunch.getInventory().add(e.getGoodsNum()));
+							productLaunchMapper.updateById(productLaunch);
+						});
+					}
+				});
+			}
+		}
+		return R.success("操作成功");
+	}
+
 	/**
 	 * 生成入库任务
 	 *
@@ -548,6 +592,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			auditProecessDTO.setSendTime(new Date());//请核时间
 			auditProecessDTO.setBillTime(declare.getCreateTime());//业务日期
 			auditProecessDTO.setTenantId(AuthUtil.getTenantId());//租户id
+			auditProecessDTO.setCorpId(declare.getCustomerId());
 			R financeProcess = checkClient.createFinanceProcess(auditProecessDTO);
 			if (!financeProcess.isSuccess()) {
 				throw new SecurityException("操作失败,请联系管理员");

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

@@ -113,10 +113,12 @@ public class ProductLaunchController extends BladeController {
 		String deptId = pages.getRecords().stream().map(PjProductLaunch::getSharedCompany).filter(ObjectUtils::isNotNull).distinct().collect(Collectors.joining());
 		R<List<Dept>> deptList = iSysClient.selectByDeptIds(deptId);
 		for (PjProductLaunch item : pages.getRecords()) {
-			String deptName = deptList.getData().stream()
-				.filter(e -> ObjectUtils.isNotNull(item.getSharedCompany()) && item.getSharedCompany().contains(e.getId() + ""))
-				.map(Dept::getFullName).collect(Collectors.joining());
-			item.setSharedCompany(deptName);
+			if(ObjectUtils.isNotNull(deptList.getData()) && deptList.getData().size()>0){
+				String deptName = deptList.getData().stream()
+					.filter(e -> ObjectUtils.isNotNull(item.getSharedCompany()) && item.getSharedCompany().contains(e.getId() + ""))
+					.map(Dept::getFullName).collect(Collectors.joining());
+				item.setSharedCompany(deptName);
+			}
 		}
 		return R.data(pages);
 	}
@@ -187,7 +189,7 @@ public class ProductLaunchController extends BladeController {
 	}
 
 	/**
-	 * 导入产品上架
+	 * 导入产品上架(excel)
 	 */
 	@PostMapping("/import-productLaunch")
 	@ApiOperationSupport(order = 9)
@@ -201,6 +203,19 @@ public class ProductLaunchController extends BladeController {
 	}
 
 	/**
+	 * 导入产品上架
+	 */
+	@PostMapping("/productLaunch")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "导入产品上架信息", notes = "传入list")
+	public R productLaunch(@RequestBody List<PjProductLaunch> list) {
+		if (CollectionUtils.isEmpty(list)) {
+			throw new SecurityException("数据不能为空");
+		}
+		return productLaunchService.productLaunch(list);
+	}
+
+	/**
 	 * 导出模板
 	 */
 	@GetMapping("/export-productLaunch")

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

@@ -101,4 +101,5 @@ public interface IProductLaunchService extends IService<PjProductLaunch> {
 	R addToCart(PjProductLaunch productLaunch);
 
 
+	R productLaunch(List<PjProductLaunch> list);
 }

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

@@ -267,6 +267,9 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 
 				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){
+						throw new RuntimeException("商品" + e.getCname() + "库存为零,请处理后重新导入");
+					}
 					productLaunch.setInventory(list.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				}
 			} else {
@@ -602,4 +605,157 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 		return R.success("操作成功");
 	}
 
+	@Override
+	public R productLaunch(List<PjProductLaunch> list) {
+		List<PjProductLaunch> pjProductLaunchList = new ArrayList<>();
+		List<PjProductLaunch> launchList = new ArrayList<>();
+		List<PjProductLaunch> pjProductLaunchList1 = new ArrayList<>();
+		list.forEach(productLaunch -> {
+
+			//获得商品信息
+			PjGoodsDesc pjGoodsDesc = goodsDescMapper.selectOne(new LambdaQueryWrapper<PjGoodsDesc>()
+				.eq(PjGoodsDesc::getIsDeleted, 0)
+				.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
+				.eq(PjGoodsDesc::getCname, productLaunch.getCname()));
+
+			if (ObjectUtil.isNotEmpty(pjGoodsDesc)) {
+				//商品id
+				productLaunch.setGoodsId(pjGoodsDesc.getId());
+				productLaunch.setBrandId(pjGoodsDesc.getBrandId());
+				productLaunch.setBrandName(pjGoodsDesc.getBrandName());
+				productLaunch.setBrandItem(pjGoodsDesc.getBrandItem());
+				productLaunch.setPlaceProduction(pjGoodsDesc.getPlaceProduction());
+				productLaunch.setExplosionProof(pjGoodsDesc.getExplosionProof());
+				productLaunch.setOriginalFactory(pjGoodsDesc.getOriginalFactory());
+				productLaunch.setSelfRecovery(pjGoodsDesc.getSelfRecovery());
+				productLaunch.setCnameInt(pjGoodsDesc.getCnameInt());
+				productLaunch.setSpecificationAndModel(pjGoodsDesc.getSpecificationAndModel());
+
+				//获得库存
+				LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+				lambdaQueryWrapper.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
+					.eq(PjStockDesc::getIsDeleted, 0)
+					.eq(PjStockDesc::getGoodsId, pjGoodsDesc.getId());
+
+				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){
+						throw new RuntimeException("商品" + productLaunch.getCname() + "库存为零,请处理后重新导入");
+					}
+					productLaunch.setInventory(pjStockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				}
+			} else {
+				throw new RuntimeException("商品" + productLaunch.getCname() + "名称错误或商品不存在");
+			}
+
+			//获得所属公司
+			if (StringUtil.isNotBlank(productLaunch.getSalesCompanyName())) {
+				R<Dept> dept = iSysClient.getDeptIByName(AuthUtil.getTenantId(), productLaunch.getSalesCompanyName());
+				if (ObjectUtil.isNotEmpty(dept.getData())) {
+					productLaunch.setSalesCompanyId(dept.getData().getId());
+					productLaunch.setSalesCompanyName(dept.getData().getFullName());
+				} else {
+					throw new SecurityException("请输入正确的所属公司");
+				}
+			}
+			productLaunch.setBillType(0);
+			productLaunch.setPriceOne(productLaunch.getPriceOne());
+			productLaunch.setPriceTwo(productLaunch.getPriceTwo());
+			productLaunch.setPriceThree(productLaunch.getPriceThree());
+			productLaunch.setPriceFour(productLaunch.getPriceFour());
+
+			// 如果名称相等 就认为重复
+			LambdaQueryWrapper<PjProductLaunch> queryWrapper = new LambdaQueryWrapper<>();
+			queryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
+				.eq(PjProductLaunch::getCname, productLaunch.getCname())
+				.eq(PjProductLaunch::getSalesCompanyId, productLaunch.getSalesCompanyId())
+				.eq(PjProductLaunch::getIsDeleted, 0)
+				.eq(PjProductLaunch::getBillType, 0);
+			PjProductLaunch one = baseMapper.selectOne(queryWrapper);
+
+			if (one == null) {
+				productLaunch.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+				productLaunch.setCreateTime(new Date());
+				productLaunch.setCreateUser(AuthUtil.getUserId());
+				productLaunch.setTenantId(AuthUtil.getTenantId());
+				productLaunch.setUpAndDownShelves(1);
+			} else {
+				productLaunch.setId(one.getId());
+				productLaunch.setUpdateUser(AuthUtil.getUserId());
+				productLaunch.setUpdateTime(new Date());
+				productLaunch.setSharedCompany(one.getSharedCompany());
+			}
+			//获得共享公司
+			if (StringUtil.isNotBlank(productLaunch.getSharedCompany())) {
+				R<List<Dept>> dept = iSysClient.getDeptListIByName(AuthUtil.getTenantId(), productLaunch.getSharedCompany());
+				for (Dept item : dept.getData()) {
+					PjProductLaunch launch = new PjProductLaunch();
+					BeanUtils.copyProperties(productLaunch, launch);
+
+					LambdaQueryWrapper<PjProductLaunch> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
+					lambdaQueryWrapper1.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
+						.eq(PjProductLaunch::getIsDeleted, 0)
+						.eq(PjProductLaunch::getBillType, 1)
+						.eq(PjProductLaunch::getGoodsId, productLaunch.getGoodsId())
+						.eq(PjProductLaunch::getSalesCompanyId, item)
+						.eq(PjProductLaunch::getSourceCompanyId, productLaunch.getSalesCompanyId());
+					PjProductLaunch selOne = baseMapper.selectOne(lambdaQueryWrapper1);
+
+					if (ObjectUtil.isEmpty(selOne)) {
+						launch.setId(null);
+						launch.setBillType(1);
+						launch.setWhetherShare(0);
+						launch.setUpAndDownShelves(0);
+						launch.setCreateUser(AuthUtil.getUserId());
+						launch.setCreateTime(new Date());
+						launch.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+						launch.setSourceId(productLaunch.getId());
+						launch.setSourceCompanyId(productLaunch.getSalesCompanyId());
+						launch.setTenantId(AuthUtil.getTenantId());
+						launch.setSharedCompany(null);
+						launch.setSalesCompanyId(item.getId());
+						launch.setSalesCompanyName(item.getFullName());
+						launchList.add(launch);
+					} else {
+						selOne.setInventory(productLaunch.getInventory());
+						selOne.setPriceOne(productLaunch.getPriceOne());
+						selOne.setPriceTwo(productLaunch.getPriceTwo());
+						selOne.setPriceThree(productLaunch.getPriceThree());
+						selOne.setPriceFour(productLaunch.getPriceFour());
+						selOne.setBrandItem(productLaunch.getBrandItem());
+						selOne.setPlaceProduction(productLaunch.getPlaceProduction());
+						selOne.setExplosionProof(productLaunch.getExplosionProof());
+						selOne.setOriginalFactory(productLaunch.getOriginalFactory());
+						selOne.setSelfRecovery(productLaunch.getSelfRecovery());
+						selOne.setUpdateTime(new Date());
+						selOne.setUpdateUser(AuthUtil.getUserId());
+						selOne.setWhetherShare(0);
+						selOne.setUpAndDownShelves(0);
+						selOne.setSharedCompany(null);
+						launchList.add(selOne);
+					}
+				}
+				LambdaQueryWrapper<PjProductLaunch> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+				lambdaQueryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
+					.eq(PjProductLaunch::getBillType, 1)
+					.eq(PjProductLaunch::getIsDeleted, 0)
+					.eq(PjProductLaunch::getGoodsId, productLaunch.getGoodsId())
+					.eq(PjProductLaunch::getSourceCompanyId, productLaunch.getSalesCompanyId());
+
+				List<PjProductLaunch> productLaunchList = baseMapper.selectList(lambdaQueryWrapper);
+				if (ObjectUtil.isNotEmpty(productLaunchList)) {
+					productLaunchList.forEach(i -> {
+						i.setWhetherShare(1);
+						pjProductLaunchList1.add(i);
+					});
+				}
+			}
+			pjProductLaunchList.add(productLaunch);
+		});
+		this.saveOrUpdateBatch(pjProductLaunchList);
+		this.saveOrUpdateBatch(launchList);
+		this.updateBatchById(pjProductLaunchList1);
+		return R.success("ok");
+	}
+
 }

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

@@ -44,6 +44,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 配件批发库存表 控制器
@@ -94,14 +95,34 @@ public class StockDescController extends BladeController {
 		return R.data(pages);
 	}
 
+
+	/**
+	 * 获取上架管理所需库存
+	 */
+	@GetMapping("/groundingList")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入stockDesc")
+	public R<IPage<PjStockDesc>> groundingList(PjStockDesc stockDesc, Query query) {
+		List<PjProductLaunch> pjProductLaunchList = productLaunchService.list(new LambdaQueryWrapper<PjProductLaunch>()
+			.eq(PjProductLaunch::getIsDeleted, 0)
+			.eq(PjProductLaunch::getSalesCompanyId, AuthUtil.getDeptId()));
+		List<Long> ids = pjProductLaunchList.stream().map(PjProductLaunch::getGoodsId).distinct().collect(Collectors.toList());
+		if (ObjectUtils.isNotNull(ids) && ids.size() > 0){
+			stockDesc.setGoodsIds(ids);
+		}
+		stockDesc.setSalesCompanyIds(AuthUtil.getDeptId());
+		IPage<PjStockDesc> pages = stockDescService.selectStockDescPage(Condition.getPage(query), stockDesc);
+		return R.data(pages);
+	}
+
 	/**
 	 * 自定义分页 配件批发库存表
 	 */
 	@GetMapping("/page")
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "分页", notes = "传入stockDesc")
-	public R<IPage<StockDescVO>> page(StockDescVO stockDesc, Query query) {
-		IPage<StockDescVO> pages = stockDescService.selectStockDescPage(Condition.getPage(query), stockDesc);
+	public R<IPage<PjStockDesc>> page(PjStockDesc stockDesc, Query query) {
+		IPage<PjStockDesc> pages = stockDescService.selectStockDescPage(Condition.getPage(query), stockDesc);
 		return R.data(pages);
 	}
 

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

@@ -16,6 +16,7 @@
  */
 package org.springblade.salesPart.stock.mapper;
 
+import org.apache.ibatis.annotations.Param;
 import org.springblade.salesPart.entity.PjStockDesc;
 import org.springblade.salesPart.vo.StockDescVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -37,7 +38,7 @@ public interface StockDescMapper extends BaseMapper<PjStockDesc> {
 	 * @param stockDesc
 	 * @return
 	 */
-	List<StockDescVO> selectStockDescPage(IPage page, StockDescVO stockDesc);
+	List<PjStockDesc> selectStockDescPage(IPage page, @Param("stockDesc") PjStockDesc stockDesc);
 
 	/**
 	 * 获得未导入到上架管理的库存账

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

@@ -29,8 +29,73 @@
     </resultMap>
 
 
-    <select id="selectStockDescPage" resultMap="stockDescResultMap">
-        select * from pjpf_stock_desc where is_deleted = 0
+    <select id="selectStockDescPage" parameterType="org.springblade.salesPart.entity.PjStockDesc" resultMap="stockDescResultMap">
+        SELECT
+        id,
+        tenant_id,
+        create_user,
+        create_dept,
+        create_time,
+        update_user,
+        update_time,
+        is_deleted,
+        remarks,
+        status,
+        storage_id,
+        storage_name,
+        goods_id,
+        code,
+        cname,
+        brand_id,
+        brand_name,
+        typeno,
+        brand_item,
+        product_description,
+        goods_type_id,
+        SUM(balance_quantity) AS balance_quantity,
+        sales_company_id,
+        sales_company_name,
+        dot,
+        store_inventory,
+        inventory_amount,
+        inventory_cost_price,
+        inventory_alert
+        FROM pjpf_stock_desc
+        <where>
+             is_deleted = 0
+            and balance_quantity != 0
+            <if test="stockDesc.brandId != null and stockDesc.brandId != ''">
+                and brand_id = #{stockDesc.brandId}
+            </if>
+            <if test='stockDesc.cname != null and stockDesc.cname != ""'>
+                and cname like CONCAT(CONCAT('%', #{stockDesc.cname}), '%')
+            </if>
+            <if test='stockDesc.code != null and stockDesc.code != ""'>
+                and code like CONCAT(CONCAT('%', #{stockDesc.code}), '%')
+            </if>
+            <if test='stockDesc.salesCompanyIds != null'>
+                and find_in_set(sales_company_id,#{stockDesc.salesCompanyIds})
+            </if>
+            <if test='stockDesc.brandId != null'>
+                and brand_id = #{stockDesc.brandId}
+            </if>
+            <if test='stockDesc.goodsTypeId != null'>
+                and goods_type_id = #{stockDesc.goodsTypeId}
+            </if>
+            <if test='stockDesc.typeno != null and stockDesc.typeno != ""'>
+                and typeno like CONCAT(CONCAT('%', #{stockDesc.typeno}), '%')
+            </if>
+            <if test='stockDesc.goodsIds != null and stockDesc.goodsIds'>
+                and goods_id not IN
+                <foreach collection="stockDesc.goodsIds" item="ids" index="index" open="(" close=")" separator=",">
+                    #{ids}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY
+        goods_id
+        order By
+        create_time
     </select>
     <select id="getStockList" resultType="org.springblade.salesPart.entity.PjStockDesc">
         SELECT

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

@@ -39,7 +39,7 @@ public interface IStockDescService extends IService<PjStockDesc> {
 	 * @param stockDesc
 	 * @return
 	 */
-	IPage<StockDescVO> selectStockDescPage(IPage<StockDescVO> page, StockDescVO stockDesc);
+	IPage<PjStockDesc> selectStockDescPage(IPage<PjStockDesc> page, PjStockDesc stockDesc);
 
 	/**
 	 * 获得未导入到上架管理的库存账

+ 1 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/stock/service/impl/StockDescServiceImpl.java

@@ -52,7 +52,7 @@ public class StockDescServiceImpl extends ServiceImpl<StockDescMapper, PjStockDe
 	private final GoodsDescMapper goodsDescMapper;
 
 	@Override
-	public IPage<StockDescVO> selectStockDescPage(IPage<StockDescVO> page, StockDescVO stockDesc) {
+	public IPage<PjStockDesc> selectStockDescPage(IPage<PjStockDesc> page, PjStockDesc stockDesc) {
 		return page.setRecords(baseMapper.selectStockDescPage(page, stockDesc));
 	}