wangzhuo 2 anni fa
parent
commit
151fa4f2bb
12 ha cambiato i file con 360 aggiunte e 8 eliminazioni
  1. 48 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjGoodsDesc.java
  2. 13 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrder.java
  3. 15 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/enums/OrderTypeEnum.java
  4. 49 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/excel/GoodsExcel.java
  5. 5 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/ICorpsAttnService.java
  6. 5 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/ICorpsDescService.java
  7. 12 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsAttnServiceImpl.java
  8. 5 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java
  9. 2 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  10. 13 4
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/controller/ShoppingCartController.java
  11. 19 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/IShoppingCartService.java
  12. 174 3
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java

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

@@ -255,6 +255,54 @@ public class PjGoodsDesc implements Serializable {
 	private String selfRecovery;
 
 	/**
+	 * 次日达售价1
+	 */
+	@ApiModelProperty(value = "次日达售价1")
+	private BigDecimal nextDayDeliveryPriceOne;
+
+	/**
+	 * 次日达售价2
+	 */
+	@ApiModelProperty(value = "次日达售价2")
+	private BigDecimal nextDayDeliveryPriceTwo;
+
+	/**
+	 * 次日达售价3
+	 */
+	@ApiModelProperty(value = "次日达售价3")
+	private BigDecimal nextDayDeliveryPriceThree;
+
+	/**
+	 * 次日达售价4
+	 */
+	@ApiModelProperty(value = "次日达售价4")
+	private BigDecimal nextDayDeliveryPriceFour;
+
+	/**
+	 * 次日达售价5
+	 */
+	@ApiModelProperty(value = "次日达售价5")
+	private BigDecimal nextDayDeliveryPriceFive;
+
+	/**
+	 * 次日达售价6
+	 */
+	@ApiModelProperty(value = "次日达售价6")
+	private BigDecimal nextDayDeliveryPriceSix;
+
+	/**
+	 * 次日达售价7
+	 */
+	@ApiModelProperty(value = "次日达售价7")
+	private BigDecimal nextDayDeliveryPriceSeven;
+
+	/**
+	 * 次日达售价8
+	 */
+	@ApiModelProperty(value = "次日达售价8")
+	private BigDecimal nextDayDeliveryPriceEight;
+
+	/**
 	 * 商品分类名称
 	 */
 	@TableField(exist = false)

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

@@ -116,6 +116,13 @@ public class PjOrder implements Serializable {
 	*/
 		@ApiModelProperty(value = "订单状态")
 		private String status;
+
+	/**
+	 * 小程序订单状态
+	 */
+	@ApiModelProperty(value = "小程序订单状态")
+	private String xcxStatus;
+
 	/**
 	* 业务类型
 	*/
@@ -258,6 +265,12 @@ public class PjOrder implements Serializable {
 	private String receivableType;
 
 	/**
+	 * 运费
+	 */
+	@ApiModelProperty(value = "运费")
+	private BigDecimal freight;
+
+	/**
 	 * 销售明细list
 	 */
 	@TableField(exist = false)

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

@@ -29,6 +29,11 @@ public enum OrderTypeEnum {
 	XSLR("录入"),
 
 	/**
+	 * 销售待确认
+	 */
+	XSDQR("待确认"),
+
+	/**
 	 * 销售待发货状态
 	 */
 	XSDFH("待发货"),
@@ -83,6 +88,16 @@ public enum OrderTypeEnum {
 	 */
 	PASS("审批通过"),
 
+	/**
+	 * 小程序
+	 */
+	XCX("XCX"),
+
+	/**
+	 * 网页端
+	 */
+	WEB("WEB"),
+
 	;
 
 	private final String type;

+ 49 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/excel/GoodsExcel.java

@@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.alibaba.excel.annotation.write.style.ContentRowHeight;
 import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+
 import lombok.Data;
 
 import java.io.Serializable;
@@ -144,6 +145,54 @@ public class GoodsExcel implements Serializable {
 	private BigDecimal priceEight;
 
 	/**
+	 * 次日达售价1
+	 */
+	@ExcelProperty(value = "次日达售价1")
+	private BigDecimal nextDayDeliveryPriceOne;
+
+	/**
+	 * 次日达售价2
+	 */
+	@ExcelProperty(value = "次日达售价2")
+	private BigDecimal nextDayDeliveryPriceTwo;
+
+	/**
+	 * 次日达售价3
+	 */
+	@ExcelProperty(value = "次日达售价3")
+	private BigDecimal nextDayDeliveryPriceThree;
+
+	/**
+	 * 次日达售价4
+	 */
+	@ExcelProperty(value = "次日达售价4")
+	private BigDecimal nextDayDeliveryPriceFour;
+
+	/**
+	 * 次日达售价5
+	 */
+	@ExcelProperty(value = "次日达售价5")
+	private BigDecimal nextDayDeliveryPriceFive;
+
+	/**
+	 * 次日达售价6
+	 */
+	@ExcelProperty(value = "次日达售价6")
+	private BigDecimal nextDayDeliveryPriceSix;
+
+	/**
+	 * 次日达售价7
+	 */
+	@ExcelProperty(value = "次日达售价7")
+	private BigDecimal nextDayDeliveryPriceSeven;
+
+	/**
+	 * 次日达售价8
+	 */
+	@ExcelProperty(value = "次日达售价8")
+	private BigDecimal nextDayDeliveryPriceEight;
+
+	/**
 	 * 是否管理批次号  0否1是
 	 */
 	@ExcelProperty(value = "是否管理批次号 0否1是")

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

@@ -46,4 +46,9 @@ public interface ICorpsAttnService extends IService<PjCorpsAttn> {
 	 * @return
 	 */
 	R createUser(PjCorpsAttn corpsAttn);
+
+	/**
+	 * 根据当前登陆人获得客户联系人
+	 */
+	PjCorpsAttn getAttn(Long userId);
 }

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

@@ -92,4 +92,9 @@ public interface ICorpsDescService extends IService<PjCorpsDesc> {
 	 * @return
 	 */
 	List<CorpsDescVO> selectCorpsDescAll(CorpsDescVO corpsDesc);
+
+	/**
+	 * 根据客户联系人获得客户
+	 */
+	PjCorpsDesc getCorpsDesc(Long id);
 }

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

@@ -16,11 +16,13 @@
  */
 package org.springblade.salesPart.corps.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
 import org.springblade.client.constant.LandConstant;
+import org.springblade.client.entity.CorpsAttn;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
@@ -116,4 +118,14 @@ public class CorpsAttnServiceImpl extends ServiceImpl<CorpsAttnMapper, PjCorpsAt
 		return R.success("操作成功");
 	}
 
+	@Override
+	public PjCorpsAttn getAttn(Long userId) {
+		PjCorpsAttn corpsAttn = baseMapper.selectOne(new LambdaQueryWrapper<PjCorpsAttn>()
+			.eq(PjCorpsAttn::getUserId, userId)
+			.eq(PjCorpsAttn::getIsDeleted, 0)
+			.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+		);
+		return corpsAttn;
+	}
+
 }

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

@@ -390,6 +390,11 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 
 	}
 
+	@Override
+	public PjCorpsDesc getCorpsDesc(Long id) {
+		return baseMapper.selectById(id);
+	}
+
 	/**
 	 * 根据客户名和类型查询客户
 	 *

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

@@ -132,6 +132,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			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());
@@ -213,7 +214,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	}
 
 	/**
-	 * 生成库任务
+	 * 生成库任务
 	 *
 	 * @param order
 	 * @return

+ 13 - 4
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/controller/ShoppingCartController.java

@@ -24,12 +24,12 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 
+import oracle.jdbc.proxy.annotation.Post;
 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.salesPart.entity.PjGoodsDesc;
 import org.springblade.salesPart.entity.PjShoppingCart;
 import org.springblade.salesPart.vo.ShoppingCartVO;
 import org.springframework.web.bind.annotation.*;
@@ -125,7 +125,7 @@ public class ShoppingCartController extends BladeController {
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入shoppingCart")
 	public R submit(@Valid @RequestBody PjShoppingCart shoppingCart) {
-		return R.status(shoppingCartService.saveOrUpdate(shoppingCart));
+		return shoppingCartService.saveShoppingCart(shoppingCart);
 	}
 
 
@@ -146,8 +146,17 @@ public class ShoppingCartController extends BladeController {
 	@ApiOperationSupport(order = 9)
 	@ApiOperation(value = "加入购物车", notes = "传入shoppingCart")
 	public R addToCart(PjShoppingCart shoppingCart){
-		shoppingCartService.addToCart(shoppingCart);
-		return null;
+		return shoppingCartService.addToCart(shoppingCart);
+	}
+
+	/**
+	 * 购物车生成销售单
+	 */
+	@GetMapping("/generateOrder")
+	@ApiOperationSupport(order = 10)
+	@ApiOperation(value = "购物车生成销售单", notes = "传入shoppingCart")
+	public R generateOrder(@RequestParam String address, @RequestParam Map<String, List<PjShoppingCart>> map){
+		return shoppingCartService.generateOrder(address, map);
 	}
 
 }

+ 19 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/IShoppingCartService.java

@@ -23,6 +23,9 @@ import org.springblade.core.tool.api.R;
 import org.springblade.salesPart.entity.PjShoppingCart;
 import org.springblade.salesPart.vo.ShoppingCartVO;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  *
  * 配件批发购物车服务类
@@ -33,6 +36,14 @@ import org.springblade.salesPart.vo.ShoppingCartVO;
 public interface IShoppingCartService extends IService<PjShoppingCart> {
 
 	/**
+	 * 保存修改购物车信息
+	 *
+	 * @param shoppingCart
+	 * @return
+	 */
+	R saveShoppingCart(PjShoppingCart shoppingCart);
+
+	/**
 	 * 自定义分页
 	 *
 	 * @param page
@@ -49,4 +60,12 @@ public interface IShoppingCartService extends IService<PjShoppingCart> {
 	 */
 	R addToCart(PjShoppingCart shoppingCart);
 
+	/**
+	 * 购物车生成销售单
+	 *
+	 * @param address 	地址
+	 * @param map		按仓库分类的商品集合
+	 */
+	R generateOrder(String address, Map<String, List<PjShoppingCart>> map);
+
 }

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

@@ -16,18 +16,35 @@
  */
 package org.springblade.salesPart.shoppingCart.service.impl;
 
+import com.alibaba.csp.sentinel.util.StringUtil;
 import lombok.AllArgsConstructor;
 import org.springblade.client.feign.ISerialClient;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
-import org.springblade.salesPart.entity.PjShoppingCart;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.salesPart.corps.service.ICorpsAttnService;
+import org.springblade.salesPart.corps.service.ICorpsDescService;
+import org.springblade.salesPart.entity.*;
+import org.springblade.salesPart.enums.OrderTypeEnum;
+import org.springblade.salesPart.goods.mapper.GoodsDescMapper;
+import org.springblade.salesPart.order.mapper.OrderItemsMapper;
+import org.springblade.salesPart.order.mapper.OrderMapper;
 import org.springblade.salesPart.shoppingCart.mapper.ShoppingCartMapper;
 import org.springblade.salesPart.shoppingCart.service.IShoppingCartService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.salesPart.storage.mapper.StorageDescMapper;
 import org.springblade.salesPart.vo.ShoppingCartVO;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 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;
+import java.util.Map;
+
 /**
  *
  * 配件批发购物车服务实现类
@@ -39,14 +56,60 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 @AllArgsConstructor
 public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjShoppingCart> implements IShoppingCartService {
 
-	private ISerialClient serialClient;//生成系统编号
+	private final ISerialClient serialClient;//生成系统编号
+	private final StorageDescMapper storageDescMapper;//仓库
+	private final GoodsDescMapper goodsDescMapper;//商品
+	private final ICorpsAttnService corpsAttnService;//客户联系人
+	private final ICorpsDescService corpsDescService;//客户
+	private final OrderMapper orderMapper;
+	private final OrderItemsMapper orderItemsMapper;
+
+	/**
+	 * 保存修改购物车信息
+	 *
+	 * @param shoppingCart
+	 * @return
+	 */
+	@Override
+	@Transactional
+	public R saveShoppingCart(PjShoppingCart shoppingCart) {
+		//仓库名称
+		shoppingCart.setStorageName(storageDescMapper.selectById(shoppingCart.getStorageId()).getCname());
+		//商品名称
+		shoppingCart.setGoodsName(goodsDescMapper.selectById(shoppingCart.getGoodsId()).getCname());
+		if (shoppingCart.getId() == null){
+			// 获取系统编号
+			R billNo = serialClient.getBillNo("GWC", "GWC", "GWC");
+			if (billNo.getCode() != 200) {
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				return R.fail(500, "生成系统编号失败");
+			}
+			shoppingCart.setBillNo((String) billNo.getData());
+			shoppingCart.setCreateUser(AuthUtil.getUserId());
+			shoppingCart.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+			shoppingCart.setCreateTime(new Date());
+			baseMapper.insert(shoppingCart);
+		}else {
+			shoppingCart.setUpdateTime(new Date());
+			shoppingCart.setUpdateUser(AuthUtil.getUserId());
+			baseMapper.updateById(shoppingCart);
+		}
+		return R.data(shoppingCart);
+	}
 
 	@Override
 	public IPage<ShoppingCartVO> selectShoppingCartPage(IPage<ShoppingCartVO> page, ShoppingCartVO shoppingCart) {
 		return page.setRecords(baseMapper.selectShoppingCartPage(page, shoppingCart));
 	}
 
+	/**
+	 * 加入购物车
+	 *
+	 * @param shoppingCart
+	 * @return
+	 */
 	@Override
+	@Transactional
 	public R addToCart(PjShoppingCart shoppingCart) {
 		// 获取系统编号
 		R billNo = serialClient.getBillNo("GWC", "GWC", "GWC");
@@ -55,7 +118,115 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 			return R.fail(500, "生成系统编号失败");
 		}
 		shoppingCart.setBillNo((String) billNo.getData());
-		return null;
+		shoppingCart.setCreateUser(AuthUtil.getUserId());
+		shoppingCart.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+		shoppingCart.setCreateTime(new Date());
+
+		//仓库名称
+		shoppingCart.setStorageName(storageDescMapper.selectById(shoppingCart.getStorageId()).getCname());
+		//商品名称
+		shoppingCart.setGoodsName(goodsDescMapper.selectById(shoppingCart.getGoodsId()).getCname());
+
+		baseMapper.insert(shoppingCart);
+		return R.success("操作成功");
+	}
+
+	/**
+	 * 购物车生成销售单
+	 *
+	 * @param address 	地址
+	 * @param map		按仓库分类的商品集合
+	 */
+	@Override
+	public R generateOrder(String address, Map<String, List<PjShoppingCart>> map) {
+
+		//从集合中取出商品生成销售单
+		if (ObjectUtil.isNotEmpty(map)){
+
+			PjCorpsDesc corpsDesc = null;
+			//根据当前登录人获得客户
+			PjCorpsAttn corpsAttn = corpsAttnService.getAttn(AuthUtil.getUserId());
+			if (ObjectUtil.isNotEmpty(corpsAttn)){
+				corpsDesc = corpsDescService.getCorpsDesc(corpsAttn.getPid());
+				if (ObjectUtil.isEmpty(corpsDesc)){
+					throw new RuntimeException("当前用户客户不存在");
+				}
+			}
+
+			PjCorpsDesc finalCorpsDesc = corpsDesc;
+			map.forEach((k, v) -> {
+				if (StringUtil.isNotBlank(k)) {
+
+					List<PjShoppingCart> list = v;
+
+					//保存销售主表信息
+					PjOrder order = new PjOrder();
+					// 获取系统编号
+					R billNo = serialClient.getBillNo(OrderTypeEnum.SALES.getType(), OrderTypeEnum.SALES.getType(), OrderTypeEnum.SALES.getType());
+					if (billNo.getCode() != 200){
+						TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+						throw new RuntimeException("生成系统编号失败");
+					}
+					order.setOrdNo((String) billNo.getData());
+					order.setCreateUser(AuthUtil.getUserId());
+					order.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+					order.setCreateTime(new Date());
+					order.setTenantId(AuthUtil.getTenantId());
+					order.setStatus(OrderTypeEnum.XSDQR.getType());
+					order.setXcxStatus(OrderTypeEnum.XSDFH.getType());
+					order.setCustomerId(finalCorpsDesc.getId());
+					order.setCustomerName(finalCorpsDesc.getCname());
+					order.setStorageId(list.get(0).getStorageId());
+					order.setStorageName(k);
+					order.setRecAddress(address);
+					order.setContacts(corpsAttn.getCname());
+					order.setPhone(corpsAttn.getTel());
+					order.setBsType(OrderTypeEnum.SALES.getType());
+					order.setBusinessSource(OrderTypeEnum.XCX.getType());
+					orderMapper.insert(order);
+
+					//保存销售明细信息
+					if (ObjectUtil.isNotEmpty(list)){
+						list.forEach(e -> {
+							PjOrderItems orderItems = new PjOrderItems();
+							BeanUtils.copyProperties(e, orderItems);
+
+							orderItems.setId(null);
+							orderItems.setCreateUser(AuthUtil.getUserId());
+							orderItems.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+							orderItems.setCreateTime(new Date());
+							orderItems.setPid(order.getId());
+							orderItems.setTenantId(AuthUtil.getTenantId());
+							orderItems.setBillNo(order.getOrdNo());
+							orderItems.setBizType(order.getBsType());
+							orderItemsMapper.insert(orderItems);
+
+						});
+						BigDecimal totalMoney = BigDecimal.ZERO;
+						order.setNumberRows(list.size());//行数
+						//明细总数量
+						order.setGoodsTotalNum(list.stream().filter(e ->e.getGoodsNum() != null).map(PjShoppingCart::getGoodsNum).reduce(BigDecimal.ZERO,BigDecimal::add));
+
+						//明细总金额
+						totalMoney = list.stream().reduce(BigDecimal.ZERO, (x, y) -> {
+							return x.add(y.getGoodsNum().multiply(y.getPrice()));
+						},BigDecimal::add).setScale(2,BigDecimal.ROUND_HALF_UP);
+
+						if (list.size() == 1){
+							totalMoney.add(new BigDecimal(5));
+						}
+						order.setTotalMoney(totalMoney);
+					}
+
+					orderMapper.updateById(order);
+
+				}
+			});
+
+		}else {
+			throw new RuntimeException("请选择需要结算的商品");
+		}
+		return R.success("操作成功");
 	}
 
 }