瀏覽代碼

国内贸易发货单确认收货功能,暂未启用 缺少溢付款业务

lazhaoqian 4 年之前
父節點
當前提交
f499c975c6

+ 2 - 0
blade-service-api/blade-deliver-goods-api/src/main/java/org/springblade/deliver/goods/entity/DeliveryItems.java

@@ -311,6 +311,8 @@ public class DeliveryItems implements Serializable {
 	private BigDecimal integralMultiples;
 	@ApiModelProperty(value = "商品叫赠送积分 赠品叫兑换积分")
 	private BigDecimal integral;
+	@ApiModelProperty(value = "到货数量")
+	private BigDecimal arrivalQuantity;
 
 
 }

+ 8 - 0
blade-service-api/blade-deliver-goods-api/src/main/java/org/springblade/deliver/goods/enums/DeliveryEnum.java

@@ -17,6 +17,14 @@ public enum  DeliveryEnum {
 	 * 撤销发货
 	 */
 	REPEAL(2),
+	/**
+	 * 收货
+	 */
+	TAKE(3),
+	/**
+	 * 撤销收货
+	 */
+	REVOCATION(4),
 
 	;
 	private final Integer type;

+ 4 - 0
blade-service-api/blade-deliver-goods-api/src/main/java/org/springblade/deliver/goods/enums/DeliveryStatusEnum.java

@@ -17,6 +17,10 @@ public enum DeliveryStatusEnum {
 	 * 撤销发货
 	 */
 	REPEAL("录入"),
+	/**
+	 * 收货
+	 */
+	REVOCATION("已收货"),
 
 	;
 	private final String type;

+ 24 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/DeliveryController.java

@@ -181,6 +181,30 @@ public class DeliveryController extends BladeController {
 		delivery.setDeliveryType(DeliveryEnum.REPEAL.getType());
 		return deliveryService.submit(delivery);
 	}
+	/**
+	 * 国内贸易发货单确认收货
+	 */
+	@PostMapping("/takeDelivery")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "国内贸易发货单确认收货,确认发货后才能点", notes = "传入delivery")
+	public R takeDelivery(@Valid @RequestBody Delivery delivery) {
+		delivery.setBillType(OrderTypeEnum.SHIP.getType());
+		delivery.setTradeType(OrderTypeEnum.DOMESTIC.getType());
+		delivery.setDeliveryType(DeliveryEnum.TAKE.getType());
+		return deliveryService.revocation(delivery);
+	}
+	/**
+	 * 国内贸易发货单撤销确认收货
+	 */
+	@PostMapping("/revocation")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "国内贸易发货单撤销确认收货,确认收货才能点", notes = "传入delivery")
+	public R revocation(@Valid @RequestBody Delivery delivery) {
+		delivery.setBillType(OrderTypeEnum.SHIP.getType());
+		delivery.setTradeType(OrderTypeEnum.DOMESTIC.getType());
+		delivery.setDeliveryType(DeliveryEnum.REVOCATION.getType());
+		return deliveryService.revocation(delivery);
+	}
 
 	/**
 	 * 修改 国内发货通知单

+ 1 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/mapper/DeliveryItemsMapper.xml

@@ -49,6 +49,7 @@
         <result column="good_type" property="goodType"/>
         <result column="integral_multiples" property="integralMultiples"/>
         <result column="integral" property="integral"/>
+        <result column="arrival_quantity" property="arrivalQuantity"/>
     </resultMap>
 
 

+ 7 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/IDeliveryService.java

@@ -61,6 +61,13 @@ public interface IDeliveryService extends IService<Delivery> {
 	R submit(Delivery delivery);
 
 	/**
+	 * 国内贸易发货单 确认或撤销收货
+	 * @param delivery
+	 * @return
+	 */
+	R revocation(Delivery delivery);
+
+	/**
 	 * 确认收货
 	 * @param delivery
 	 * @return

+ 35 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java

@@ -191,6 +191,22 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 				baseMapper.updateById(deliveryItems);
 			}
 		}
+		if (CollectionUtils.isNotEmpty(itemsList)){
+			itemsList.stream().forEach(item ->{
+				item.setPid(pId);//父级ID
+				item.setTenantId(SecureUtil.getTenantId());//租户id
+				item.setDeliveryStatus(delivery.getDeliveryStatus());
+				if (item.getId() == null){
+					item.setCreateUser(SecureUtil.getUserId());
+					item.setCreateTime(new Date());
+					baseMapper.insert(item);
+				}else {
+					item.setUpdateTime(new Date());
+					item.setUpdateUser(SecureUtil.getUserId());
+					baseMapper.updateById(item);
+				}
+			});
+		}
 		//发货只会消费积分
 		/*if (delivery.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType())){
 			R updatePoints = this.updatePoints(delivery, null, itemsList);
@@ -201,6 +217,25 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 		return deliveryItemsList;
 	}
 	/**
+	 * 提交收货信息
+	 * @param pId
+	 * @param deliveryItemsList
+	 * @param
+	 * @return
+	 */
+	public List<DeliveryItems> revocation(Long pId,Delivery delivery,List<DeliveryItems> deliveryItemsList){
+		List<DeliveryItems> collect = deliveryItemsList.stream().filter(e -> e.getGoodType() == 0).collect(Collectors.toList());//发货商品
+		//收货只会增加积分
+		if (delivery.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType())){
+			R updatePoints = this.updatePoints(delivery, collect, null);
+			if (!updatePoints.isSuccess()){
+				throw  new RuntimeException(updatePoints.getMsg());
+			}
+		}
+		//溢付款功能未开发
+		return deliveryItemsList;
+	}
+	/**
 	 * 查询库存账
 	 * @param tradeType 单据类型 进口、出口、国内
 	 * @param corpId 销售公司/客户/工厂

+ 43 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -228,6 +228,49 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 	}
 
 	@Override
+	@GlobalTransactional
+	@Transactional(rollbackFor = Exception.class)
+	public R revocation(Delivery delivery) {
+		String billStatus = null;//订单状态
+		if (delivery.getDeliveryType() != null && delivery.getDeliveryType() == DeliveryEnum.TAKE.getType()){
+			billStatus = DeliveryStatusEnum.REVOCATION.getType();
+		}else if (delivery.getDeliveryType() != null && delivery.getDeliveryType() == DeliveryEnum.REVOCATION.getType()){
+			billStatus = DeliveryStatusEnum.DELIVER.getType();
+		}
+		if (delivery.getId() == null){
+			R billNo = serialClient.getBillNo(delivery.getBillType(),delivery.getTradeType(),delivery.getBillType());
+			if (billNo.isSuccess() && billNo.getData() != null){
+				delivery.setSysNo((String) billNo.getData());
+			}else {
+				return R.fail(500,"系统编号生成失败");
+			}
+			delivery.setCreateUser(SecureUtil.getUserId());
+			delivery.setCreateTime(new Date());
+			delivery.setTenantId(SecureUtil.getTenantId());
+			delivery.setDeliveryStatus(billStatus);
+			baseMapper.insert(delivery);
+		}else {
+			Delivery deliverys = baseMapper.selectById(delivery.getId());//查询原始单据
+			if (delivery.getDeliveryType() == DeliveryEnum.TAKE.getType() && delivery.getDeliveryStatus().equals(DeliveryStatusEnum.REVOCATION.getType())){//发货
+				throw  new RuntimeException("已收货请勿重复收货");
+			}else if (delivery.getDeliveryType() == DeliveryEnum.REVOCATION.getType() && !delivery.getDeliveryStatus().equals(DeliveryStatusEnum.REVOCATION.getType()))//撤销发货
+			{
+				throw  new RuntimeException("已撤销收货请勿重复撤销收货");
+			}
+			delivery.setDeliveryStatus(billStatus);
+			delivery.setUpdateUser(SecureUtil.getUserId());
+			delivery.setUpdateTime(new Date());
+			baseMapper.updateById(delivery);
+		}
+		//保存发货明细信息
+		if (CollectionUtils.isNotEmpty(delivery.getDeliveryItemsList())){
+			List<DeliveryItems> deliveryItemsList = deliveryItemsService.revocation(delivery.getId(),delivery, delivery.getDeliveryItemsList());
+			delivery.setDeliveryItemsList(deliveryItemsList);
+		}
+		return R.data(delivery);
+	}
+
+	@Override
 	@Transactional(rollbackFor = Exception.class)
 	@GlobalTransactional
 	public void comfire(Delivery delivery)