wangzhuo vor 2 Jahren
Ursprung
Commit
b51ff5e61a
18 geänderte Dateien mit 411 neuen und 51 gelöschten Zeilen
  1. 1 2
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjCorpsAddr.java
  2. 7 1
      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/entity/PjShoppingCart.java
  4. 5 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/enums/OrderTypeEnum.java
  5. 68 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsAddrController.java
  6. 10 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/ICorpsAddrService.java
  7. 28 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsAddrServiceImpl.java
  8. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java
  9. 8 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  10. 2 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/controller/ProductLaunchController.java
  11. 16 12
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/service/impl/ProductLaunchServiceImpl.java
  12. 23 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/controller/ShipController.java
  13. 16 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/IShipService.java
  14. 141 3
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java
  15. 40 11
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/controller/ShoppingCartController.java
  16. 2 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/IShoppingCartService.java
  17. 15 14
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java
  18. 13 2
      blade-service/trade-finance/src/main/java/org/springblade/finance/mapper/AccMapper.xml

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

@@ -104,7 +104,7 @@ public class PjCorpsAddr implements Serializable {
 		@ApiModelProperty(value = "详细地址")
 		private String detailedAddress;
 	/**
-	* 默认地址
+	* 默认地址(1 默认地址)
 	*/
 		@ApiModelProperty(value = "默认地址")
 		private String defaultAddres;
@@ -119,5 +119,4 @@ public class PjCorpsAddr implements Serializable {
 	@ApiModelProperty(value = "所属公司名称")
 	private String salesCompanyName;
 
-
 }

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

@@ -124,7 +124,7 @@ public class PjOrder implements Serializable {
 	private String xcxStatus;
 
 	/**
-	* 业务类型
+	* 业务类型(XS,CG)
 	*/
 		@ApiModelProperty(value = "业务类型")
 		private String bsType;
@@ -299,4 +299,10 @@ public class PjOrder implements Serializable {
 	 */
 	@TableField(exist = false)
 	private List<PjPayment> paymentRecordsList;
+
+	/**
+	 * 出入库集合
+	 */
+	@TableField(exist = false)
+	private List<PjShip> shipList;
 }

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

@@ -17,10 +17,13 @@
 package org.springblade.salesPart.entity;
 
 import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.time.LocalDateTime;
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -250,4 +253,16 @@ public class PjShoppingCart implements Serializable {
 	 */
 	@ApiModelProperty(value = "上架管理id")
 	private Long productLaunchId;
+
+	/**
+	 * 附件明细集合
+	 */
+	@TableField(exist = false)
+	private List<PjProductLaunchFiles> filesList;
+
+	/**
+	 * 库存
+	 */
+	@ApiModelProperty(value = "库存")
+	private BigDecimal inventory;
 }

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

@@ -108,6 +108,11 @@ public enum OrderTypeEnum {
 	 */
 	SHIPED("已发货"),
 
+	/**
+	 * 出库工单状态已入库
+	 */
+	RECEIVED("已入库"),
+
 	;
 
 	private final String type;

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

@@ -16,6 +16,8 @@
  */
 package org.springblade.salesPart.corps.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -23,11 +25,18 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 
+import org.springblade.client.entity.CorpsDesc;
 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.secure.utils.SecureUtil;
 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.corps.service.ICorpsAttnService;
+import org.springblade.salesPart.corps.service.ICorpsDescService;
+import org.springblade.salesPart.entity.PjCorpsAttn;
+import org.springblade.salesPart.entity.PjCorpsDesc;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.salesPart.entity.PjCorpsAddr;
@@ -48,6 +57,9 @@ import org.springblade.core.boot.ctrl.BladeController;
 public class CorpsAddrController extends BladeController {
 
 	private final ICorpsAddrService corpsAddrService;
+	private final ICorpsAttnService corpsAttnService;
+	private final ICorpsDescService corpsDescService;
+
 
 	/**
 	 * 详情
@@ -117,7 +129,10 @@ public class CorpsAddrController extends BladeController {
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入corpsAddr")
 	public R submit(@Valid @RequestBody PjCorpsAddr corpsAddr) {
-		return R.status(corpsAddrService.saveOrUpdate(corpsAddr));
+		if (ObjectUtil.isEmpty(corpsAddr.getId())){
+			throw new RuntimeException("缺少必要参数");
+		}
+		return corpsAddrService.saveAddrMessage(corpsAddr);
 	}
 
 
@@ -131,5 +146,57 @@ public class CorpsAddrController extends BladeController {
 		return R.status(corpsAddrService.removeByIds(Func.toLongList(ids)));
 	}
 
+	/**
+	 * 分页 配件批发小程序客户明细地址
+	 */
+	@GetMapping("/corpsAddrList")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "分页", notes = "传入corpsAddr")
+	public R<IPage<PjCorpsAddr>> corpsAddrList(PjCorpsAddr corpsAddr, Query query) {
 
+		PjCorpsDesc corpsDesc;
+		PjCorpsAttn corpsAttn = corpsAttnService.getAttn(AuthUtil.getUserId());
+		if (ObjectUtils.isNull(corpsAttn)) {
+			throw new RuntimeException("未查到用户信息");
+		} else {
+			corpsDesc = corpsDescService.getCorpsDesc(corpsAttn.getPid());
+			if (ObjectUtils.isNull(corpsDesc)) {
+				throw new RuntimeException("未查到用户信息");
+			}
+		}
+
+		LambdaQueryWrapper<PjCorpsAddr> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(PjCorpsAddr::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsAddr::getIsDeleted, 0)
+			.eq(PjCorpsAddr::getPid, corpsDesc.getId())
+			.eq(ObjectUtils.isNotEmpty(corpsAddr.getDefaultAddres()), PjCorpsAddr::getDefaultAddres, corpsAddr.getDefaultAddres());
+
+		IPage<PjCorpsAddr> pages = corpsAddrService.page(Condition.getPage(query), lambdaQueryWrapper);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增或修改 配件批发小程序客户明细地址
+	 */
+	@PostMapping("/submitAddr")
+	@ApiOperationSupport(order = 10)
+	@ApiOperation(value = "新增或修改", notes = "传入corpsAddr")
+	public R submitAddr(@Valid @RequestBody PjCorpsAddr corpsAddr) {
+		if (ObjectUtil.isEmpty(corpsAddr.getId())){
+			throw new RuntimeException("缺少必要参数");
+		}
+		//根据当前登录人获得客户
+		PjCorpsDesc corpsDesc;
+		PjCorpsAttn corpsAttn = corpsAttnService.getAttn(AuthUtil.getUserId());
+		if (ObjectUtils.isNull(corpsAttn)) {
+			throw new RuntimeException("未查到用户信息");
+		} else {
+			corpsDesc = corpsDescService.getCorpsDesc(corpsAttn.getPid());
+			if (ObjectUtils.isNull(corpsDesc)) {
+				throw new RuntimeException("未查到用户信息");
+			}
+		}
+		corpsAddr.setPid(corpsDesc.getId());
+		return corpsAddrService.saveAddrMessage(corpsAddr);
+	}
 }

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

@@ -16,6 +16,7 @@
  */
 package org.springblade.salesPart.corps.service;
 
+import org.springblade.core.tool.api.R;
 import org.springblade.salesPart.entity.PjCorpsAddr;
 import org.springblade.salesPart.vo.CorpsAddrVO;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -38,4 +39,13 @@ public interface ICorpsAddrService extends IService<PjCorpsAddr> {
 	 */
 	IPage<CorpsAddrVO> selectCorpsAddrPage(IPage<CorpsAddrVO> page, CorpsAddrVO corpsAddr);
 
+	/**
+	 * 保存订单信息
+	 *
+	 * @param corpsAddr
+	 * @return
+	 */
+	R saveAddrMessage(PjCorpsAddr corpsAddr);
+
+
 }

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

@@ -16,6 +16,9 @@
  */
 package org.springblade.salesPart.corps.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
 import org.springblade.salesPart.entity.PjCorpsAddr;
 import org.springblade.salesPart.vo.CorpsAddrVO;
 import org.springblade.salesPart.corps.mapper.CorpsAddrMapper;
@@ -23,6 +26,9 @@ import org.springblade.salesPart.corps.service.ICorpsAddrService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
 
 /**
  * 配件批发客户明细地址 服务实现类
@@ -38,4 +44,26 @@ public class CorpsAddrServiceImpl extends ServiceImpl<CorpsAddrMapper, PjCorpsAd
 		return page.setRecords(baseMapper.selectCorpsAddrPage(page, corpsAddr));
 	}
 
+	/**
+	 * 保存订单信息
+	 *
+	 * @param corpsAddr
+	 * @return
+	 */
+	@Override
+	@Transactional
+	public R saveAddrMessage(PjCorpsAddr corpsAddr) {
+		corpsAddr.setTenantId(AuthUtil.getTenantId());
+		if (corpsAddr.getId() == null) {
+			corpsAddr.setCreateTime(new Date());
+			corpsAddr.setCreateUser(AuthUtil.getUserId());
+			baseMapper.insert(corpsAddr);
+		} else {
+			corpsAddr.setUpdateTime(new Date());
+			corpsAddr.setUpdateUser(AuthUtil.getUserId());
+			baseMapper.updateById(corpsAddr);
+		}
+		return R.data(corpsAddr);
+	}
+
 }

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

@@ -85,6 +85,7 @@ public class OrderController extends BladeController {
 		LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 			.eq(PjOrder::getIsDeleted, 0)
+			.eq(PjOrder::getBsType, order.getBsType())
 			.eq(ObjectUtils.isNotEmpty(order.getStorageId()), PjOrder::getStorageId, order.getStorageId())//仓库
 			.like(ObjectUtils.isNotEmpty(order.getStorageName()), PjOrder::getStorageName, order.getStorageName())
 			.eq(ObjectUtils.isNotEmpty(order.getCustomerId()), PjOrder::getCustomerId, order.getCustomerId())//客户

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

@@ -87,8 +87,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		LambdaQueryWrapper<PjPayment> paymentLambdaQueryWrapper = new LambdaQueryWrapper<>();
 		paymentLambdaQueryWrapper.eq(PjPayment::getTenantId, AuthUtil.getTenantId())
 			.eq(PjPayment::getIsDeleted, 0)
-			.eq(PjPayment::getOrderId, detail.getId());
+			.in(PjPayment::getOrderId, detail.getId());
 		detail.setPaymentRecordsList(paymentMapper.selectList(paymentLambdaQueryWrapper));
+
+		//获得出入库记录
+		LambdaQueryWrapper<PjShip> shipLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		shipLambdaQueryWrapper.eq(PjShip::getTenantId, AuthUtil.getTenantId())
+			.eq(PjShip::getIsDeleted, 0)
+			.eq(PjShip::getOrdId, detail.getId());
+		detail.setShipList(shipMapper.selectList(shipLambdaQueryWrapper));
 		return detail;
 	}
 

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

@@ -247,10 +247,10 @@ public class ProductLaunchController extends BladeController {
 			if (ObjectUtil.isNotEmpty(corpsAttn)){
 				corpsDesc = corpsDescService.getCorpsDesc(corpsAttn.getPid());
 				if (ObjectUtil.isEmpty(corpsDesc)){
-					throw new RuntimeException("当前用户客户不存在");
+					throw new RuntimeException("未查到用户信息");
 				}
 			}else {
-				throw new RuntimeException("当前用户不属于任何客户");
+				throw new RuntimeException("未查到用户信息");
 			}
 
 			PjCorpsDesc finalCorpsDesc = corpsDesc;

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

@@ -309,7 +309,7 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 		if (ObjectUtil.isNotEmpty(corpsAttn)){
 			corpsDesc = corpsDescService.getCorpsDesc(corpsAttn.getPid());
 			if (ObjectUtil.isEmpty(corpsDesc)){
-				throw new RuntimeException("当前用户客户不存在");
+				throw new RuntimeException("未查到用户信息");
 			}else {
 				if (ObjectUtil.isNotEmpty(corpsDesc.getPriceSystem())){
 					if ("售价1".equals(corpsDesc.getPriceSystem())){
@@ -325,19 +325,20 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 					detail.setMallPrice(detail.getPriceOne());
 				}
 			}
+		}else {
+			throw new RuntimeException("未查到用户信息");
 		}
 
-		if (detail.getBillType() != 1){
-			LambdaQueryWrapper<PjProductLaunch> queryWrapper = new LambdaQueryWrapper<>();
-			queryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
-				.eq(PjProductLaunch::getBillType, 1)
-				.eq(PjProductLaunch::getIsDeleted, 0)
-				.eq(PjProductLaunch::getGoodsId, detail.getGoodsId())
-				.eq(PjProductLaunch::getSalesCompanyId, detail.getSalesCompanyId());
 
-			List<PjProductLaunch> list = baseMapper.selectList(queryWrapper);
-			detail.setShareList(list);
-		}
+		LambdaQueryWrapper<PjProductLaunch> queryWrapper = new LambdaQueryWrapper<>();
+		queryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
+			.eq(PjProductLaunch::getIsDeleted, 0)
+			.eq(PjProductLaunch::getGoodsId, detail.getGoodsId())
+			.eq(PjProductLaunch::getSalesCompanyId, detail.getSalesCompanyId());
+
+		List<PjProductLaunch> list = baseMapper.selectList(queryWrapper);
+		detail.setShareList(list);
+
 
 		return detail;
 	}
@@ -358,7 +359,7 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 		if (ObjectUtil.isNotEmpty(corpsAttn)){
 			corpsDesc = corpsDescService.getCorpsDesc(corpsAttn.getPid());
 			if (ObjectUtil.isEmpty(corpsDesc)){
-				throw new RuntimeException("当前用户客户不存在");
+				throw new RuntimeException("未查到用户信息");
 			}else {
 				if (ObjectUtil.isNotEmpty(corpsDesc.getPriceSystem())){
 					if ("售价1".equals(corpsDesc.getPriceSystem())){
@@ -374,6 +375,8 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 					detail.setMallPrice(detail.getPriceOne());
 				}
 			}
+		}else {
+			throw new RuntimeException("未查到用户信息");
 		}
 
 		return detail;
@@ -417,6 +420,7 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 		shoppingCart.setProductLaunchId(productLaunch.getId());
 		shoppingCart.setSalesCompanyId(productLaunch.getSalesCompanyId());
 		shoppingCart.setSalesCompanyName(productLaunch.getSalesCompanyName());
+		shoppingCart.setInventory(productLaunch.getInventory());
 
 		shoppingCartMapper.insert(shoppingCart);
 		return R.success("操作成功");

+ 23 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/controller/ShipController.java

@@ -189,4 +189,27 @@ public class ShipController extends BladeController {
 		return shipService.outboundCompleted(ship);
 	}
 
+	/**
+	 * 生成入库工单
+	 */
+	@PostMapping("/generateWarehousing")
+	@ApiOperationSupport(order = 11)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R generateWarehousing(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		if (ObjectUtil.isEmpty(ids)){
+			throw new RuntimeException("缺少必要参数");
+		}
+		return shipService.generateWarehousing(ids);
+	}
+
+	/**
+	 * 入库完成
+	 */
+	@GetMapping("/WarehousingComplete")
+	@ApiOperationSupport(order = 12)
+	@ApiOperation(value = "入库完成", notes = "传入ship")
+	public R WarehousingComplete(PjShip ship){
+		return shipService.WarehousingComplete(ship);
+	}
+
 }

+ 16 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/IShipService.java

@@ -72,4 +72,20 @@ public interface IShipService extends IService<PjShip> {
 	 */
 	R outboundCompleted(PjShip ship);
 
+	/**
+	 * 生成入库工单
+	 *
+	 * @param ids
+	 * @return
+	 */
+	R generateWarehousing(String ids);
+
+	/**
+	 * 入库完成
+	 *
+	 * @param ship
+	 * @return
+	 */
+	R WarehousingComplete(PjShip ship);
+
 }

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

@@ -144,6 +144,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 	 * @return
 	 */
 	@Override
+	@Transactional
 	public R outboundWorkOrder(String ids) {
 		List<Long> shipIds = Func.toLongList(ids);
 		for (Long id : shipIds) {
@@ -159,7 +160,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 			R billNo = serialClient.getBillNo(OrderTypeEnum.FHGD.getType(), OrderTypeEnum.FHGD.getType(), OrderTypeEnum.FHGD.getType());
 			if (billNo.getCode() != 200) {
 				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-				continue;
+				return R.fail(500, "生成系统编号失败");
 			}
 			BeanUtil.copyProperties(rwShip, gdShip);
 
@@ -180,7 +181,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				.eq("tenant_id", AuthUtil.getTenantId()));
 			if (ObjectUtil.isNotEmpty(list)){
 				list.forEach(e -> {
-					//根据销售明细创建库工单明细
+					//根据销售明细创建库工单明细
 					PjShipItems shipItems = new PjShipItems();
 					BeanUtil.copyProperties(e, shipItems);
 
@@ -216,7 +217,144 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		ship.setStatusName(OrderTypeEnum.OURTBOUND.getType());
 		if (ship.getId() == null){
 			// 获取系统编号
-			R billNo = serialClient.getBillNo(ship.getBizTypeName(), ship.getBizTypeName(), ship.getBizTypeName());
+			R billNo = serialClient.getBillNo(OrderTypeEnum.FHGD.getType(), OrderTypeEnum.FHGD.getType(), OrderTypeEnum.FHGD.getType());
+			if (billNo.getCode() != 200) {
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				return R.fail(500, "生成系统编号失败");
+			}
+			ship.setBillno((String) billNo.getData());
+			ship.setCreateTime(new Date());
+			ship.setCreateUser(AuthUtil.getUserId());
+			ship.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+			ship.setTenantId(AuthUtil.getTenantId());
+			baseMapper.insert(ship);
+		}else {
+			ship.setUpdateUser(AuthUtil.getUserId());
+			ship.setUpdateTime(new Date());
+			baseMapper.updateById(ship);
+		}
+
+		// 保存订单明细
+		if (CollectionUtils.isNotEmpty(ship.getShipItemsList())) {
+			ship.getShipItemsList().forEach(item -> {
+				if (item.getId() == null){
+					item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setPid(ship.getId());
+					item.setTenantId(AuthUtil.getTenantId());
+					shipItemsMapper.insert(item);
+				}else {
+					item.setUpdateTime(new Date());
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setPid(ship.getId());
+					shipItemsMapper.updateById(item);
+				}
+
+				PjOrderItems orderItems = orderItemsMapper.selectById(item.getSrcItemId());
+				if (ObjectUtil.isNotEmpty(orderItems)){
+					orderItems.setSendNum(item.getSendNum());
+					orderItemsMapper.updateById(orderItems);
+				}else {
+					throw new RuntimeException("数据异常请联系管理员");
+				}
+			});
+			ship.setShipItemsList(ship.getShipItemsList());
+			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("数据异常请联系管理员");
+		}
+
+		return R.data(ship);
+	}
+
+	/**
+	 * 生成入库工单
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@Override
+	@Transactional
+	public R generateWarehousing(String ids) {
+		List<Long> shipIds = Func.toLongList(ids);
+		for (Long id : shipIds) {
+			//获得出库任务数据
+			PjShip rwShip = baseMapper.selectById(id);
+			if (ObjectUtil.isEmpty(rwShip)) {
+				throw new RuntimeException("数据异常 请联系管理员");
+			}
+
+			//新建入库工单
+			PjShip gdShip = new PjShip();
+			// 获取系统编号
+			R billNo = serialClient.getBillNo(OrderTypeEnum.SHGD.getType(), OrderTypeEnum.SHGD.getType(), OrderTypeEnum.SHGD.getType());
+			if (billNo.getCode() != 200) {
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				return R.fail(500, "生成系统编号失败");
+			}
+			BeanUtil.copyProperties(rwShip, gdShip);
+
+			gdShip.setId(null);
+			gdShip.setBillno((String) billNo.getData());
+			//gdShip.setStatusName(OrderTypeEnum.TOBESHIPPEDOUT.getType());
+			gdShip.setTenantId(AuthUtil.getTenantId());
+			gdShip.setBizTypeName(OrderTypeEnum.SHGD.getType());
+			gdShip.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+			gdShip.setCreateUser(AuthUtil.getUserId());
+			gdShip.setCreateTime(new Date());
+			baseMapper.insert(gdShip);
+
+			//根据采购id获得采购明细数据
+			List<PjOrderItems> list = orderItemsMapper.selectList(new QueryWrapper<PjOrderItems>()
+				.eq("pid", rwShip.getOrdId())
+				.eq("is_deleted", 0)
+				.eq("tenant_id", AuthUtil.getTenantId()));
+			if (ObjectUtil.isNotEmpty(list)){
+				list.forEach(e -> {
+					//根据采购明细创建入库工单明细
+					PjShipItems shipItems = new PjShipItems();
+					BeanUtil.copyProperties(e, shipItems);
+
+					shipItems.setId(null);
+					shipItems.setPid(gdShip.getId());
+					shipItems.setSrcItemId(e.getId());
+					shipItems.setCreateTime(new Date());
+					shipItems.setCreateUser(AuthUtil.getUserId());
+					shipItems.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+					shipItems.setSendNum(e.getGoodsNum());
+					shipItemsMapper.insert(shipItems);
+				});
+				gdShip.setNumberRows(list.size());
+			}
+
+			//修改入库任务状态
+			rwShip.setStatusName(OrderTypeEnum.DISPATCHED.getType());
+			baseMapper.updateById(rwShip);
+		}
+
+		return R.success("操作成功");
+	}
+
+	/**
+	 * 入库完成
+	 *
+	 * @param ship
+	 * @return
+	 */
+	@Override
+	@Transactional
+	public R WarehousingComplete(PjShip ship) {
+		ship.setStatusName(OrderTypeEnum.RECEIVED.getType());
+		if (ship.getId() == null){
+			// 获取系统编号
+			R billNo = serialClient.getBillNo(OrderTypeEnum.SHGD.getType(), OrderTypeEnum.SHGD.getType(), OrderTypeEnum.SHGD.getType());
 			if (billNo.getCode() != 200) {
 				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 				return R.fail(500, "生成系统编号失败");

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

@@ -18,6 +18,7 @@ package org.springblade.salesPart.shoppingCart.controller;
 
 import com.alibaba.cloud.commons.lang.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -31,15 +32,17 @@ 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.salesPart.entity.PjProductLaunchFiles;
 import org.springblade.salesPart.entity.PjShoppingCart;
+import org.springblade.salesPart.productLaunch.service.IProductLaunchFilesService;
 import org.springblade.salesPart.vo.ShoppingCartVO;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.salesPart.shoppingCart.service.IShoppingCartService;
 import org.springblade.core.boot.ctrl.BladeController;
 
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -56,6 +59,7 @@ import java.util.stream.Collectors;
 public class ShoppingCartController extends BladeController {
 
 	private final IShoppingCartService shoppingCartService;
+	private final IProductLaunchFilesService productLaunchFilesService;
 
 	/**
 	 * 详情
@@ -74,7 +78,7 @@ public class ShoppingCartController extends BladeController {
 	@GetMapping("/list")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "购物车列表不分页查询", notes = "传入shoppingCart")
-	public R<Map<String, List<PjShoppingCart>>> list(PjShoppingCart shoppingCart) {
+	public R<List<Map<String, Object>>> list(PjShoppingCart shoppingCart) {
 		LambdaQueryWrapper<PjShoppingCart> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(PjShoppingCart::getTenantId, AuthUtil.getTenantId())
 			.eq(PjShoppingCart::getIsDeleted, 0)
@@ -82,8 +86,27 @@ public class ShoppingCartController extends BladeController {
 		List<PjShoppingCart> list = shoppingCartService.list(lambdaQueryWrapper);
 
 		//按照所属公司分组
-		Map<String, List<PjShoppingCart>> map = list.stream().filter(item-> StringUtils.isNotBlank(item.getSalesCompanyName())).collect(Collectors.groupingBy(PjShoppingCart::getSalesCompanyName));
-		return R.data(map);
+		Map<String, List<PjShoppingCart>> map = list.stream().filter(item-> StringUtils.isNotBlank(item.getSalesCompanyName()))
+			.collect(Collectors.groupingBy(PjShoppingCart::getSalesCompanyName));
+
+		List<Map<String, Object>> mapList = new ArrayList<>();
+		map.forEach((k, v) -> {
+
+			List<PjShoppingCart> shoppingCartList = v;
+
+			if (ObjectUtil.isNotEmpty(shoppingCartList)){
+				shoppingCartList.forEach(e -> {
+					e.setFilesList(productLaunchFilesService.list(new QueryWrapper<PjProductLaunchFiles>().eq("pid", e.getProductLaunchId()).eq("is_deleted", 0)));
+				});
+			}
+
+			Map<String, Object> objectMap = new HashMap<>();
+			objectMap.put("name", k);
+			objectMap.put("list", v);
+
+			mapList.add(objectMap);
+		});
+		return R.data(mapList);
 	}
 
 	/**
@@ -113,9 +136,14 @@ public class ShoppingCartController extends BladeController {
 	@PostMapping("/update")
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入shoppingCart")
-	public R update(@Valid @RequestBody PjShoppingCart shoppingCart) {
-		shoppingCart.setIsDeleted(1);
-		shoppingCartService.updateById(shoppingCart);
+	public R update(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		List<String> idList = Arrays.asList(ids.split(","));
+		idList.forEach(id -> {
+			PjShoppingCart shoppingCart = new PjShoppingCart();
+			shoppingCart.setId(Long.valueOf(id));
+			shoppingCart.setIsDeleted(1);
+			shoppingCartService.updateById(shoppingCart);
+		});
 		return R.success("操作成功");
 	}
 
@@ -143,11 +171,12 @@ public class ShoppingCartController extends BladeController {
 	/**
 	 * 购物车生成销售单
 	 */
-	@GetMapping("/generateOrder")
+	@PostMapping("/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);
+	public R generateOrder(@RequestParam String address, @RequestParam List<Map<String, Object>> list){
+		return shoppingCartService.generateOrder(address, list);
 	}
 
+
 }

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

@@ -57,8 +57,8 @@ public interface IShoppingCartService extends IService<PjShoppingCart> {
 	 * 购物车生成销售单
 	 *
 	 * @param address 	地址
-	 * @param map		按所属公司分类的商品集合
+	 * @param list		按所属公司分类的商品集合
 	 */
-	R generateOrder(String address, Map<String, List<PjShoppingCart>> map);
+	R generateOrder(String address, List<Map<String, Object>> list);
 
 }

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

@@ -108,14 +108,14 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 	 * 购物车生成销售单
 	 *
 	 * @param address 	地址
-	 * @param map		按所属公司分类的商品集合
+	 * @param list		按所属公司分类的商品集合
 	 */
 	@Override
 	@Transactional
-	public R generateOrder(String address, Map<String, List<PjShoppingCart>> map) {
+	public R generateOrder(String address, List<Map<String, Object>> list) {
 
 		//从集合中取出商品生成销售单
-		if (ObjectUtil.isNotEmpty(map)){
+		if (ObjectUtil.isNotEmpty(list)){
 
 			PjCorpsDesc corpsDesc = null;
 			//根据当前登录人获得客户
@@ -123,17 +123,18 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 			if (ObjectUtil.isNotEmpty(corpsAttn)){
 				corpsDesc = corpsDescService.getCorpsDesc(corpsAttn.getPid());
 				if (ObjectUtil.isEmpty(corpsDesc)){
-					throw new RuntimeException("当前用户客户不存在");
+					throw new RuntimeException("未查到用户信息");
 				}
 			}else {
-				throw new RuntimeException("当前用户不属于任何客户");
+				throw new RuntimeException("未查到用户信息");
 			}
 
 			PjCorpsDesc finalCorpsDesc = corpsDesc;
-			map.forEach((k, v) -> {
+			list.forEach(map -> {
+				String k = (String) map.get("name");
 				if (StringUtil.isNotBlank(k)) {
 
-					List<PjShoppingCart> list = v;
+					List<PjShoppingCart> shoppingCartList = (List<PjShoppingCart>) map.get("list");
 
 					//保存销售主表信息
 					PjOrder order = new PjOrder();
@@ -152,7 +153,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					order.setXcxStatus(OrderTypeEnum.XSDFH.getType());
 					order.setCustomerId(finalCorpsDesc.getId());
 					order.setCustomerName(finalCorpsDesc.getCname());
-					order.setSalesCompanyId(list.get(0).getSalesCompanyId());
+					order.setSalesCompanyId(shoppingCartList.get(0).getSalesCompanyId());
 					order.setSalesCompanyName(k);
 					order.setRecAddress(address);
 					order.setContacts(corpsAttn.getCname());
@@ -162,8 +163,8 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					orderMapper.insert(order);
 
 					//保存销售明细信息
-					if (ObjectUtil.isNotEmpty(list)){
-						list.forEach(e -> {
+					if (ObjectUtil.isNotEmpty(shoppingCartList)){
+						shoppingCartList.forEach(e -> {
 							PjOrderItems orderItems = new PjOrderItems();
 							BeanUtils.copyProperties(e, orderItems);
 
@@ -190,18 +191,18 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 
 						});
 						BigDecimal totalMoney = BigDecimal.ZERO;
-						order.setNumberRows(list.size());//行数
+						order.setNumberRows(shoppingCartList.size());//行数
 						//明细总数量
-						order.setGoodsTotalNum(list.stream().filter(e ->e.getGoodsNum() != null).map(PjShoppingCart::getGoodsNum).reduce(BigDecimal.ZERO,BigDecimal::add));
+						order.setGoodsTotalNum(shoppingCartList.stream().filter(e ->e.getGoodsNum() != null).map(PjShoppingCart::getGoodsNum).reduce(BigDecimal.ZERO,BigDecimal::add));
 
 						//明细总金额
-						totalMoney = list.stream().reduce(BigDecimal.ZERO, (x, y) -> {
+						totalMoney = shoppingCartList.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 (list.size() == 1){//只有一条明细加5元运费
+						if (shoppingCartList.size() == 1){//只有一条明细加5元运费
 							totalMoney.add(new BigDecimal(5));
 							order.setFreight(new BigDecimal(5));
 						}

+ 13 - 2
blade-service/trade-finance/src/main/java/org/springblade/finance/mapper/AccMapper.xml

@@ -144,7 +144,7 @@
             FA.Amount AS amount,
             FA.create_time AS createTime,
             BO.actualQuantity AS actualQuantity,
-            BO.arrivalAmount - BO.thisUsedProfit + IFNULL( BOF.amount, 0 ) AS arrivalAmount
+            BO.arrivalAmount - BO.thisUsedProfit + IFNULL( BOF.feesAmount, 0 ) AS arrivalAmount
         FROM finance_acc FA
         LEFT JOIN (
             SELECT
@@ -160,7 +160,18 @@
             GROUP BY
                 BO.id
         ) BO ON BO.id = FA.Src_parent_id
-        LEFT JOIN business_order_fees BOF ON BOF.pid = BO.id AND BOF.is_deleted = 0
+        LEFT JOIN (
+            SELECT
+                BO.id,
+                IFNULL( sum( BOF.amount ), 0 ) AS feesAmount
+            FROM business_order BO
+            LEFT JOIN business_order_fees BOF ON BOF.pid = BO.id
+            WHERE
+                BO.is_deleted = 0
+                AND BOF.is_deleted = 0
+            GROUP BY
+                BO.id
+        ) BOF ON BOF.id = FA.Src_parent_id
         <where>
             FA.tenant_id = #{acc.tenantId}
             AND FA.is_deleted = 0