浏览代码

20230515 08:41

wangzhuo 2 年之前
父节点
当前提交
eaa2aceb29
共有 18 个文件被更改,包括 352 次插入103 次删除
  1. 12 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjBrandDesc.java
  2. 10 2
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjBrandFiles.java
  3. 19 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjCorpsAddr.java
  4. 17 3
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrderItems.java
  5. 1 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjShip.java
  6. 11 4
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjShipItems.java
  7. 10 3
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjStockDesc.java
  8. 2 2
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/enums/OrderTypeEnum.java
  9. 12 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/controller/BrandDescController.java
  10. 31 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/service/impl/BrandDescServiceImpl.java
  11. 10 4
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsAddrController.java
  12. 8 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/ICorpsAddrService.java
  13. 27 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsAddrServiceImpl.java
  14. 4 18
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java
  15. 2 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.xml
  16. 106 50
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  17. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/service/impl/ProductLaunchServiceImpl.java
  18. 69 15
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java

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

@@ -115,6 +115,18 @@ public class PjBrandDesc implements Serializable {
 		private String cname;
 
 	/**
+	 * 所属公司id
+	 */
+	@ApiModelProperty(value = "所属公司id")
+	private Long salesCompanyId;
+
+	/**
+	 * 所属公司名称
+	 */
+	@ApiModelProperty(value = "所属公司名称")
+	private String salesCompanyName;
+
+	/**
 	 * 品牌附件
 	 */
 	@TableField(exist = false)

+ 10 - 2
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjBrandFiles.java

@@ -23,6 +23,7 @@ import lombok.Data;
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * 配件批发品牌附件实体类
@@ -47,6 +48,13 @@ public class PjBrandFiles implements Serializable {
 	*/
 		@ApiModelProperty(value = "主表id")
 		private Long pid;
+
+	/**
+	 * 租户id
+	 */
+	@ApiModelProperty(value = "租户id")
+	private String tenantId;
+
 	/**
 	* 排序
 	*/
@@ -86,7 +94,7 @@ public class PjBrandFiles implements Serializable {
 	* 创建时间
 	*/
 		@ApiModelProperty(value = "创建时间")
-		private LocalDateTime createTime;
+		private Date createTime;
 	/**
 	* 修改人
 	*/
@@ -96,7 +104,7 @@ public class PjBrandFiles implements Serializable {
 	* 修改时间
 	*/
 		@ApiModelProperty(value = "修改时间")
-		private LocalDateTime updateTime;
+		private Date updateTime;
 	/**
 	* 状态(0 正常 1停用)
 	*/

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

@@ -16,6 +16,7 @@
  */
 package org.springblade.salesPart.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.util.Date;
@@ -119,4 +120,22 @@ public class PjCorpsAddr implements Serializable {
 	@ApiModelProperty(value = "所属公司名称")
 	private String salesCompanyName;
 
+	/**
+	 * 地址拼接
+	 */
+	@TableField(exist = false)
+	private String Address;
+
+	/**
+	 * 联系人
+	 */
+	@ApiModelProperty(value = "联系人")
+	private String contacts;
+
+	/**
+	 * 电话
+	 */
+	@ApiModelProperty(value = "电话")
+	private String tel;
+
 }

+ 17 - 3
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrderItems.java

@@ -115,11 +115,19 @@ public class PjOrderItems implements Serializable {
 	*/
 		@ApiModelProperty(value = "商品id")
 		private Long goodsId;
+
+	/**
+	 * 品牌id
+	 */
+	@ApiModelProperty(value = "品牌id")
+	private String brandId;
+
 	/**
-	* 品牌
+	* 品牌名称
 	*/
-		@ApiModelProperty(value = "品牌")
-		private String brand;
+		@ApiModelProperty(value = "品牌名称")
+		private String brandName;
+
 	/**
 	* 规格型号
 	*/
@@ -199,4 +207,10 @@ public class PjOrderItems implements Serializable {
 	@ApiModelProperty(value = "返利")
 	private BigDecimal thisUsedProfit;
 
+	/**
+	 * 毛利
+	 */
+	@ApiModelProperty(value = "毛利")
+	private BigDecimal grossProfit;
+
 }

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

@@ -58,6 +58,7 @@ public class PjShip implements Serializable {
 	*/
 		@ApiModelProperty(value = "单据编号(任务不显示,工单显示)")
 		private String billno;
+
 	/**
 	* 订单编号(销售订单号)
 	*/

+ 11 - 4
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjShipItems.java

@@ -125,10 +125,17 @@ public class PjShipItems implements Serializable {
 	private String dot;
 
 	/**
-	* 品牌
-	*/
-		@ApiModelProperty(value = "品牌")
-		private String band;
+	 * 品牌id
+	 */
+	@ApiModelProperty(value = "品牌id")
+	private String brandId;
+
+	/**
+	 * 品牌名称
+	 */
+	@ApiModelProperty(value = "品牌名称")
+	private String brandName;
+
 	/**
 	* 规格型号
 	*/

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

@@ -110,10 +110,17 @@ public class PjStockDesc implements Serializable {
 		@ApiModelProperty(value = "商品名称")
 		private String cname;
 	/**
-	* 品牌
+	* 品牌id
 	*/
-		@ApiModelProperty(value = "品牌")
-		private String brand;
+		@ApiModelProperty(value = "品牌id")
+		private String brandId;
+
+	/**
+	 * 品牌名称
+	 */
+	@ApiModelProperty(value = "品牌名称")
+	private String brandName;
+
 	/**
 	* 规格型号
 	*/

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

@@ -91,12 +91,12 @@ public enum OrderTypeEnum {
 	/**
 	 * 小程序
 	 */
-	XCX("XCX"),
+	XCX("外部销售"),
 
 	/**
 	 * 网页端
 	 */
-	WEB("WEB"),
+	WEB("内部销售"),
 
 	/**
 	 * 出库工单状态已出库

+ 12 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/controller/BrandDescController.java

@@ -17,6 +17,7 @@
 package org.springblade.salesPart.brand.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -33,6 +34,8 @@ 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.salesPart.brand.service.IBrandFilesService;
+import org.springblade.salesPart.entity.PjBrandFiles;
 import org.springblade.salesPart.entity.PjOrder;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
@@ -58,7 +61,8 @@ import java.util.List;
 public class BrandDescController extends BladeController {
 
 	private final IBrandDescService brandDescService;
-	private IUserClient iUserClient;//获取用户信息
+	private final IUserClient iUserClient;//获取用户信息
+	private final IBrandFilesService brandFilesService;
 
 	/**
 	 * 详情
@@ -210,6 +214,13 @@ public class BrandDescController extends BladeController {
 			.like(ObjectUtils.isNotEmpty(brandDesc.getCname()), PjBrandDesc::getCname, brandDesc.getCname());
 		List<PjBrandDesc> list = brandDescService.list(lambdaQueryWrapper);
 
+		if (ObjectUtil.isNotEmpty(list)){
+			list.forEach(e -> {
+				//获取附件
+				e.setBrandFilesList(brandFilesService.list(new QueryWrapper<PjBrandFiles>().eq("pid", e.getId()).eq("is_deleted", 0)
+				.eq("version", 0)));
+			});
+		}
 		return R.data(list);
 	}
 }

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

@@ -18,9 +18,11 @@ package org.springblade.salesPart.brand.service.impl;
 
 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.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.salesPart.brand.mapper.BrandDescMapper;
 import org.springblade.salesPart.brand.service.IBrandDescService;
@@ -28,6 +30,8 @@ import org.springblade.salesPart.brand.service.IBrandFilesService;
 import org.springblade.salesPart.entity.PjBrandDesc;
 import org.springblade.salesPart.entity.PjBrandFiles;
 import org.springblade.salesPart.vo.BrandDescVO;
+import org.springblade.system.entity.Dept;
+import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 
@@ -45,6 +49,7 @@ public class BrandDescServiceImpl extends ServiceImpl<BrandDescMapper, PjBrandDe
 
 	private final IUserClient userClient;//获取用户信息
 	private final IBrandFilesService brandFilesService;
+	private final ISysClient sysClient;
 
 	/**
 	 * 获取账户管理详情
@@ -78,6 +83,16 @@ public class BrandDescServiceImpl extends ServiceImpl<BrandDescMapper, PjBrandDe
 	 */
 	@Override
 	public PjBrandDesc saveMessage(PjBrandDesc brandDesc) {
+
+		//获得所属公司
+		R<Dept> dept = sysClient.getDept(Long.valueOf(AuthUtil.getDeptId()));
+		if (ObjectUtil.isNotEmpty(dept)) {
+			brandDesc.setSalesCompanyId(dept.getData().getId());
+			brandDesc.setSalesCompanyName(dept.getData().getFullName());
+		} else {
+			throw new SecurityException("数据异常请联系管理员");
+		}
+
 		if (brandDesc.getId() != null) {
 			brandDesc.setUpdateUser(AuthUtil.getUserId());
 			brandDesc.setUpdateTime(new Date());
@@ -90,6 +105,22 @@ public class BrandDescServiceImpl extends ServiceImpl<BrandDescMapper, PjBrandDe
 			brandDesc.setTenantId(AuthUtil.getTenantId());
 			baseMapper.insert(brandDesc);
 		}
+
+		if (CollectionUtils.isNotEmpty(brandDesc.getBrandFilesList())) {
+			brandDesc.getBrandFilesList().stream().forEach(files -> {
+				files.setPid(brandDesc.getId());
+				files.setTenantId(AuthUtil.getTenantId());
+				if (files.getId() == null) {
+					files.setCreateTime(new Date());
+					files.setCreateUser(AuthUtil.getUserId());
+					brandFilesService.save(files);
+				} else {
+					files.setUpdateTime(new Date());
+					files.setUpdateUser(AuthUtil.getUserId());
+					brandFilesService.updateById(files);
+				}
+			});
+		}
 		return brandDesc;
 	}
 

+ 10 - 4
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsAddrController.java

@@ -70,7 +70,7 @@ public class CorpsAddrController extends BladeController {
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "详情", notes = "传入corpsAddr")
 	public R<PjCorpsAddr> detail(PjCorpsAddr corpsAddr) {
-		PjCorpsAddr detail = corpsAddrService.getOne(Condition.getQueryWrapper(corpsAddr));
+		PjCorpsAddr detail = corpsAddrService.getMessageByID(corpsAddr);
 		return R.data(detail);
 	}
 
@@ -154,7 +154,7 @@ public class CorpsAddrController extends BladeController {
 	@GetMapping("/corpsAddrList")
 	@ApiOperationSupport(order = 9)
 	@ApiOperation(value = "分页", notes = "传入corpsAddr")
-	public R<IPage<PjCorpsAddr>> corpsAddrList(PjCorpsAddr corpsAddr, Query query) {
+	public R<List<PjCorpsAddr>> corpsAddrList(PjCorpsAddr corpsAddr) {
 
 		PjCorpsDesc corpsDesc;
 		PjCorpsAttn corpsAttn = corpsAttnService.getAttn(AuthUtil.getUserId());
@@ -172,8 +172,14 @@ public class CorpsAddrController extends BladeController {
 			.eq(PjCorpsAddr::getIsDeleted, 0)
 			.eq(PjCorpsAddr::getPid, corpsDesc.getId());
 
-		IPage<PjCorpsAddr> pages = corpsAddrService.page(Condition.getPage(query), lambdaQueryWrapper);
-		return R.data(pages);
+		List<PjCorpsAddr> list = corpsAddrService.list(lambdaQueryWrapper);
+
+		if (ObjectUtil.isNotEmpty(list)){
+			list.forEach(e -> {
+				e.setAddress(e.getBelongtoarea() + " " +e.getDetailedAddress());
+			});
+		}
+		return R.data(list);
 	}
 
 	/**

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

@@ -18,6 +18,7 @@ package org.springblade.salesPart.corps.service;
 
 import org.springblade.core.tool.api.R;
 import org.springblade.salesPart.entity.PjCorpsAddr;
+import org.springblade.salesPart.entity.PjCorpsDesc;
 import org.springblade.salesPart.vo.CorpsAddrVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -31,6 +32,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 public interface ICorpsAddrService extends IService<PjCorpsAddr> {
 
 	/**
+	 * 获取客户地址详情
+	 * @param corpsAddr
+	 * @return
+	 */
+	PjCorpsAddr getMessageByID(PjCorpsAddr corpsAddr);
+
+	/**
 	 * 自定义分页
 	 *
 	 * @param page

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

@@ -17,13 +17,17 @@
 package org.springblade.salesPart.corps.service.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.salesPart.entity.PjCorpsAddr;
 import org.springblade.salesPart.vo.CorpsAddrVO;
 import org.springblade.salesPart.corps.mapper.CorpsAddrMapper;
 import org.springblade.salesPart.corps.service.ICorpsAddrService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.system.entity.Dept;
+import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
@@ -37,8 +41,22 @@ import java.util.Date;
  * @since 2023-04-21
  */
 @Service
+@AllArgsConstructor
 public class CorpsAddrServiceImpl extends ServiceImpl<CorpsAddrMapper, PjCorpsAddr> implements ICorpsAddrService {
 
+	private final ISysClient sysClient;
+
+	/**
+	 * 获取客户地址详情
+	 * @param corpsAddr
+	 * @return
+	 */
+	@Override
+	public PjCorpsAddr getMessageByID(PjCorpsAddr corpsAddr) {
+		PjCorpsAddr detail = baseMapper.selectById(corpsAddr.getId());
+		return detail;
+	}
+
 	@Override
 	public IPage<CorpsAddrVO> selectCorpsAddrPage(IPage<CorpsAddrVO> page, CorpsAddrVO corpsAddr) {
 		return page.setRecords(baseMapper.selectCorpsAddrPage(page, corpsAddr));
@@ -54,6 +72,15 @@ public class CorpsAddrServiceImpl extends ServiceImpl<CorpsAddrMapper, PjCorpsAd
 	@Transactional
 	public R saveAddrMessage(PjCorpsAddr corpsAddr) {
 		corpsAddr.setTenantId(AuthUtil.getTenantId());
+		//获得所属公司
+		R<Dept> dept = sysClient.getDept(Long.valueOf(AuthUtil.getDeptId()));
+		if (ObjectUtil.isNotEmpty(dept)) {
+			corpsAddr.setSalesCompanyId(dept.getData().getId());
+			corpsAddr.setSalesCompanyName(dept.getData().getFullName());
+		} else {
+			throw new SecurityException("数据异常请联系管理员");
+		}
+
 		if (corpsAddr.getId() == null) {
 			corpsAddr.setCreateTime(new Date());
 			corpsAddr.setCreateUser(AuthUtil.getUserId());

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

@@ -204,26 +204,12 @@ public class OrderController extends BladeController {
 	}
 
 	/**
-	 * 小程序支付根据仓库分单
-	 */
-	@GetMapping("appletReinsurancePolicy")
-	@ApiOperationSupport(order = 8)
-	@ApiOperation(value = "小程序分单", notes = "传入order")
-	public R appletReinsurancePolicy(PjOrder order){
-
-		//根据购物车商品仓库生成销售单
-
-
-		return null;
-	}
-
-	/**
 	 * 生成出库任务
 	 */
-	@GetMapping("/generateShipTask")
+	@PostMapping("/generateShipTask")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "生成出库任务", notes = "传入order")
-	public R generateShipTask(PjOrder order){
+	public R generateShipTask(@Valid @RequestBody PjOrder order){
 		if (order.getId() == null){
 			throw new RuntimeException("来源信息错误");
 		}
@@ -233,10 +219,10 @@ public class OrderController extends BladeController {
 	/**
 	 * 生成入库任务
 	 */
-	@GetMapping("/inboundTask")
+	@PostMapping("/inboundTask")
 	@ApiOperationSupport(order = 9)
 	@ApiOperation(value = "生成入库任务", notes = "传入order")
-	public R inboundTask(PjOrder order){
+	public R inboundTask(@RequestBody PjOrder order){
 		if (order.getId() == null){
 			throw new RuntimeException("来源信息错误");
 		}

+ 2 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.xml

@@ -17,7 +17,8 @@
         <result column="goods_no" property="goodsNo"/>
         <result column="goods_name" property="goodsName"/>
         <result column="goods_id" property="goodsId"/>
-        <result column="brand" property="brand"/>
+        <result column="brand_id" property="brandId"/>
+        <result column="brand_name" property="brandName"/>
         <result column="property_name" property="propertyName"/>
         <result column="pattern" property="pattern"/>
         <result column="goods_description" property="goodsDescription"/>

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

@@ -24,10 +24,7 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.salesPart.corps.mapper.CorpsDescMapper;
-import org.springblade.salesPart.entity.PjOrder;
-import org.springblade.salesPart.entity.PjOrderItems;
-import org.springblade.salesPart.entity.PjPayment;
-import org.springblade.salesPart.entity.PjShip;
+import org.springblade.salesPart.entity.*;
 import org.springblade.salesPart.enums.OrderTypeEnum;
 import org.springblade.salesPart.order.mapper.OrderItemsMapper;
 import org.springblade.salesPart.order.mapper.OrderMapper;
@@ -125,56 +122,115 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		order.setCustomerName(corpsDescMapper.selectById(order.getCustomerId()).getCname());
 		//仓库名称
 		order.setStorageName(storageDescMapper.selectById(order.getStorageId()).getCname());
+		// 获取系统编号
+		R billNo = serialClient.getBillNo(order.getBsType(), order.getBsType(), order.getBsType());
+		if (billNo.getCode() != 200) {
+			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+			return R.fail(500, "生成系统编号失败");
+		}
 
-		if (order.getId() == null){
-			// 获取系统编号
-			R billNo = serialClient.getBillNo(order.getBsType(), order.getBsType(), order.getBsType());
-			if (billNo.getCode() != 200) {
-				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-				return R.fail(500, "生成系统编号失败");
+		if (order.getBsType().equals(OrderTypeEnum.SALES.getType())){//销售
+			if (order.getId() == null){
+				order.setOrdNo((String) billNo.getData());
+				order.setCreateTime(new Date());
+				order.setCreateUser(AuthUtil.getUserId());
+				order.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+				order.setTenantId(AuthUtil.getTenantId());
+				order.setStatus(OrderTypeEnum.XSLR.getType());
+				order.setBusinessSource(OrderTypeEnum.WEB.getType());
+				baseMapper.insert(order);
+			}else {
+				order.setUpdateUser(AuthUtil.getUserId());
+				order.setUpdateTime(new Date());
+				baseMapper.updateById(order);
 			}
-			order.setOrdNo((String) billNo.getData());
-			order.setCreateTime(new Date());
-			order.setCreateUser(AuthUtil.getUserId());
-			order.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
-			order.setTenantId(AuthUtil.getTenantId());
-			order.setStatus(OrderTypeEnum.XSLR.getType());
-			order.setBusinessSource(OrderTypeEnum.WEB.getType());
-			baseMapper.insert(order);
-		}else {
-			order.setUpdateUser(AuthUtil.getUserId());
-			order.setUpdateTime(new Date());
-			baseMapper.updateById(order);
-		}
 
-		// 保存订单明细
-		if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
-			order.getOrderItemsList().forEach(item -> {
-				item.setBizType(order.getBsType());
-				item.setBillNo(order.getOrdNo());
-				if (item.getId() == null){
-					item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
-					item.setCreateTime(new Date());
-					item.setCreateUser(AuthUtil.getUserId());
-					item.setPid(order.getId());
-					item.setTenantId(AuthUtil.getTenantId());
-					orderItemsMapper.insert(item);
-				}else {
-					item.setUpdateTime(new Date());
-					item.setUpdateUser(AuthUtil.getUserId());
-					item.setPid(order.getId());
-					orderItemsMapper.updateById(item);
+			// 保存订单明细
+			if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
+				order.getOrderItemsList().forEach(item -> {
+					item.setBizType(order.getBsType());
+					item.setBillNo(order.getOrdNo());
+					if (item.getId() == null){
+						item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+						item.setCreateTime(new Date());
+						item.setCreateUser(AuthUtil.getUserId());
+						item.setPid(order.getId());
+						item.setTenantId(AuthUtil.getTenantId());
+						orderItemsMapper.insert(item);
+					}else {
+						item.setUpdateTime(new Date());
+						item.setUpdateUser(AuthUtil.getUserId());
+						item.setPid(order.getId());
+						orderItemsMapper.updateById(item);
+					}
+				});
+
+				BigDecimal totalMoney = BigDecimal.ZERO;
+				order.setNumberRows(order.getOrderItemsList().size());//行数
+				//明细总数量
+				order.setGoodsTotalNum(order.getOrderItemsList().stream().filter(e ->e.getGoodsNum() != null).map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO,BigDecimal::add));
+				//明细总金额
+				totalMoney = order.getOrderItemsList().stream().reduce(BigDecimal.ZERO, (x, y) -> {
+					return x.add(y.getGoodsNum().multiply(y.getPrice()));
+				},BigDecimal::add).setScale(2,BigDecimal.ROUND_HALF_UP);
+
+				order.setSalesAmount(totalMoney);
+
+				if (order.getOrderItemsList().size() == 1){//只有一条明细加5元运费
+					totalMoney.add(new BigDecimal(5));
+					order.setFreight(new BigDecimal(5));
 				}
-			});
-
-			order.setNumberRows(order.getOrderItemsList().size());//行数
-			//明细总数量
-			order.setGoodsTotalNum(order.getOrderItemsList().stream().filter(e ->e.getGoodsNum() != null).map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO,BigDecimal::add));
-			//明细总金额
-			order.setTotalMoney(order.getOrderItemsList().stream().reduce(BigDecimal.ZERO, (x, y) -> {
-				return x.add(y.getGoodsNum().multiply(y.getPrice()));
-			},BigDecimal::add).setScale(2,BigDecimal.ROUND_HALF_UP));
+				order.setTotalMoney(totalMoney);
+			}
+		}else if (order.getBsType().equals(OrderTypeEnum.PURCHASE.getType())){//采购
+			if (order.getId() == null){
+				order.setOrdNo((String) billNo.getData());
+				order.setCreateTime(new Date());
+				order.setCreateUser(AuthUtil.getUserId());
+				order.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+				order.setTenantId(AuthUtil.getTenantId());
+				order.setStatus(OrderTypeEnum.XSLR.getType());
+				baseMapper.insert(order);
+			}else {
+				order.setUpdateUser(AuthUtil.getUserId());
+				order.setUpdateTime(new Date());
+				baseMapper.updateById(order);
+			}
+
+			// 保存订单明细
+			if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
+				order.getOrderItemsList().forEach(item -> {
+					item.setBizType(order.getBsType());
+					item.setBillNo(order.getOrdNo());
+					if (item.getId() == null){
+						item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+						item.setCreateTime(new Date());
+						item.setCreateUser(AuthUtil.getUserId());
+						item.setPid(order.getId());
+						item.setTenantId(AuthUtil.getTenantId());
+						orderItemsMapper.insert(item);
+					}else {
+						item.setUpdateTime(new Date());
+						item.setUpdateUser(AuthUtil.getUserId());
+						item.setPid(order.getId());
+						orderItemsMapper.updateById(item);
+					}
+				});
+
+				BigDecimal totalMoney = BigDecimal.ZERO;
+				order.setNumberRows(order.getOrderItemsList().size());//行数
+				//明细总数量
+				order.setGoodsTotalNum(order.getOrderItemsList().stream().filter(e ->e.getGoodsNum() != null).map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO,BigDecimal::add));
+				//明细总金额
+				totalMoney = order.getOrderItemsList().stream().reduce(BigDecimal.ZERO, (x, y) -> {
+					return x.add(y.getGoodsNum().multiply(y.getPrice()));
+				},BigDecimal::add).setScale(2,BigDecimal.ROUND_HALF_UP);
+
+				order.setSalesAmount(totalMoney);
+
+			}
 		}
+
 		baseMapper.updateById(order);
 
 		return R.data(order);
@@ -213,7 +269,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		pjShip.setCreateTime(new Date());
 		shipMapper.insert(pjShip);
 
-		//修改销售状态为发货
+		//修改销售状态为发货
 		pjOrder.setStatus(OrderTypeEnum.XSDFH.getType());
 		baseMapper.updateById(pjOrder);
 

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

@@ -260,6 +260,7 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 				productLaunch.setCreateTime(new Date());
 				productLaunch.setCreateUser(AuthUtil.getUserId());
 				productLaunch.setTenantId(AuthUtil.getTenantId());
+				productLaunch.setUpAndDownShelves(1);
 				baseMapper.insert(productLaunch);
 			}else {
 				productLaunch.setId(one.getId());

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

@@ -26,14 +26,13 @@ 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.PjOrder;
-import org.springblade.salesPart.entity.PjOrderItems;
-import org.springblade.salesPart.entity.PjShip;
-import org.springblade.salesPart.entity.PjShipItems;
+import org.springblade.purchase.sales.entity.OrderItems;
+import org.springblade.salesPart.entity.*;
 import org.springblade.salesPart.enums.OrderTypeEnum;
 import org.springblade.salesPart.order.mapper.OrderItemsMapper;
 import org.springblade.salesPart.order.mapper.OrderMapper;
 import org.springblade.salesPart.ship.mapper.ShipItemsMapper;
+import org.springblade.salesPart.stock.mapper.StockDescMapper;
 import org.springblade.salesPart.vo.ShipVO;
 import org.springblade.salesPart.ship.mapper.ShipMapper;
 import org.springblade.salesPart.ship.service.IShipService;
@@ -45,6 +44,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -66,6 +66,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 	private final ShipItemsMapper shipItemsMapper;
 	private final OrderMapper orderMapper;
 	private final ISysClient sysClient;
+	private final StockDescMapper stockDescMapper;
 
 	/**
 	 * 获取收发货订单详情
@@ -103,7 +104,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		R<Dept> dept = sysClient.getDept(Long.valueOf(AuthUtil.getDeptId()));
 		if (ObjectUtil.isNotEmpty(dept)) {
 			ship.setSalesCompanyId(dept.getData().getId());
-			ship.setSalesCompanyName(dept.getData().getDeptName());
+			ship.setSalesCompanyName(dept.getData().getFullName());
 		} else {
 			throw new SecurityException("请选择所属公司");
 		}
@@ -143,9 +144,6 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					item.setPid(ship.getId());
 					shipItemsMapper.updateById(item);
 				}
-
-				//生成库存账
-
 			});
 			ship.setShipItemsList(ship.getShipItemsList());
 			ship.setNumberRows(ship.getShipItemsList().size());
@@ -270,7 +268,13 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 
 				PjOrderItems orderItems = orderItemsMapper.selectById(item.getSrcItemId());
 				if (ObjectUtil.isNotEmpty(orderItems)){
-					orderItems.setSendNum(item.getSendNum());
+
+					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()));
+					}
+
 					orderItemsMapper.updateById(orderItems);
 				}else {
 					throw new RuntimeException("数据异常请联系管理员");
@@ -280,12 +284,25 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 			ship.setNumberRows(ship.getShipItemsList().size());
 		}
 
-		PjOrder order = orderMapper.selectById(ship.getOrdId());
-		if (ObjectUtil.isNotEmpty(order)){
-			order.setStatus(OrderTypeEnum.SHIPED.getType());
-			orderMapper.updateById(order);
-		}else {
-			throw new RuntimeException("数据异常请联系管理员");
+		//获得销售订单明细
+		LambdaQueryWrapper<PjOrderItems> itemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		itemsLambdaQueryWrapper.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+			.eq(PjOrderItems::getIsDeleted, 0)
+			.eq(PjOrderItems::getPid,ship.getOrdId());
+		List<PjOrderItems> itemsList = orderItemsMapper.selectList(itemsLambdaQueryWrapper);
+		//数量和
+		BigDecimal goodsNum = itemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+		//发货数量和
+		BigDecimal sendNum = itemsList.stream().map(PjOrderItems::getSendNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+		if (goodsNum.compareTo(sendNum) == 0){//数量等于发货数量修改销售订单状态
+			PjOrder order = orderMapper.selectById(ship.getOrdId());
+			if (ObjectUtil.isNotEmpty(order)){
+				order.setStatus(OrderTypeEnum.SHIPED.getType());
+				orderMapper.updateById(order);
+			}else {
+				throw new RuntimeException("数据异常请联系管理员");
+			}
 		}
 
 		return R.data(ship);
@@ -405,6 +422,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					shipItemsMapper.updateById(item);
 				}
 
+				//修改销售明细
 				PjOrderItems orderItems = orderItemsMapper.selectById(item.getSrcItemId());
 				if (ObjectUtil.isNotEmpty(orderItems)){
 					orderItems.setSendNum(item.getSendNum());
@@ -412,6 +430,42 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				}else {
 					throw new RuntimeException("数据异常请联系管理员");
 				}
+
+				//生成库存账
+				PjStockDesc stockDesc = new PjStockDesc();
+
+				stockDesc.setSalesCompanyId(ship.getSalesCompanyId());
+				stockDesc.setSalesCompanyName(ship.getSalesCompanyName());
+				stockDesc.setStorageId(ship.getStorageId());
+				stockDesc.setGoodsId(item.getGoodsId());
+				stockDesc.setCode(item.getGoodsNo());
+				stockDesc.setCname(item.getGoodsName());
+				stockDesc.setBrandId(item.getBrandId());
+				stockDesc.setBrandName(item.getBrandName());
+				stockDesc.setTypeno(item.getPropertyName());
+				stockDesc.setBrandItem(item.getPattern());
+				stockDesc.setProductDescription(item.getGoodsDescription());
+
+				LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+				lambdaQueryWrapper.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
+					.eq(PjStockDesc::getIsDeleted, 0)
+					.eq(PjStockDesc::getSalesCompanyId, ship.getSalesCompanyId())
+					.eq(PjStockDesc::getGoodsId, item.getGoodsId())
+					.eq(PjStockDesc::getStorageId, ship.getStorageId());
+
+				PjStockDesc stockOne = stockDescMapper.selectOne(lambdaQueryWrapper);
+				if (ObjectUtil.isEmpty(stockOne)){
+					stockDesc.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+					stockDesc.setCreateTime(new Date());
+					stockDesc.setCreateUser(AuthUtil.getUserId());
+					stockDesc.setBalanceQuantity(item.getGoodsNum());
+					stockDescMapper.insert(stockDesc);
+				}else {
+					stockDesc.setUpdateTime(new Date());
+					stockDesc.setUpdateUser(AuthUtil.getUserId());
+					stockDesc.setBalanceQuantity(stockOne.getBalanceQuantity().add(item.getGoodsNum()));
+					stockDescMapper.updateById(stockDesc);
+				}
 			});
 			ship.setShipItemsList(ship.getShipItemsList());
 			ship.setNumberRows(ship.getShipItemsList().size());