Browse Source

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/entrance/EntranceOrderController.java
lazhaoqian 4 years ago
parent
commit
6d0e07c631
18 changed files with 479 additions and 16 deletions
  1. 36 0
      blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/Order.java
  2. 25 1
      blade-service-api/store-goods-api/src/main/java/com/store/goods/vo/GoodsTypeVO.java
  3. 43 0
      blade-service-api/trade-finance-api/src/main/java/com/trade/finance/dto/ApplyDTO.java
  4. 19 1
      blade-service-api/trade-finance-api/src/main/java/com/trade/finance/entity/Items.java
  5. 3 0
      blade-service-api/trade-finance-api/src/main/java/com/trade/finance/entity/Settlement.java
  6. 2 0
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/DeliveryController.java
  7. 4 4
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/entrance/EntranceOrderController.java
  8. 32 2
      blade-service/store-goods/src/main/java/com/store/goods/controller/GoodsTypeController.java
  9. 82 0
      blade-service/store-goods/src/main/java/com/store/goods/controller/OrderController.java
  10. 20 0
      blade-service/store-goods/src/main/java/com/store/goods/mapper/GoodsTypeMapper.java
  11. 52 0
      blade-service/store-goods/src/main/java/com/store/goods/mapper/GoodsTypeMapper.xml
  12. 20 0
      blade-service/store-goods/src/main/java/com/store/goods/service/IGoodsTypeService.java
  13. 21 0
      blade-service/store-goods/src/main/java/com/store/goods/service/impl/GoodsTypeServiceImpl.java
  14. 2 0
      blade-service/store-goods/src/main/java/com/store/goods/service/impl/OrderServiceImpl.java
  15. 31 4
      blade-service/trade-finance/src/main/java/com/trade/finance/controller/SettlementController.java
  16. 4 0
      blade-service/trade-finance/src/main/java/com/trade/finance/service/ISettlementService.java
  17. 1 1
      blade-service/trade-finance/src/main/java/com/trade/finance/service/impl/AccServiceImpl.java
  18. 82 3
      blade-service/trade-finance/src/main/java/com/trade/finance/service/impl/SettlementServiceImpl.java

+ 36 - 0
blade-service-api/store-goods-api/src/main/java/com/store/goods/entity/Order.java

@@ -156,4 +156,40 @@ public class Order implements Serializable {
 		private String tenantId;
 
 
+	/**
+	 * 下单人
+	 */
+	@ApiModelProperty(value = "下单人")
+	@TableField(exist = false)
+	private String customerName;
+
+
+	/**
+	 * 下单人手机号
+	 */
+	@ApiModelProperty(value = "下单人手机号")
+	@TableField(exist = false)
+	private String customerPhone;
+
+
+	/**
+	 * 收货人
+	 */
+	@ApiModelProperty(value = "收货人")
+	@TableField(exist = false)
+	private String consigneeName;
+
+	/**
+	 * 收货人电话
+	 */
+	@ApiModelProperty(value = "收货人电话")
+	@TableField(exist = false)
+	private String consigneePhone;
+
+
+
+
+
+
+
 }

+ 25 - 1
blade-service-api/store-goods-api/src/main/java/com/store/goods/vo/GoodsTypeVO.java

@@ -16,10 +16,15 @@
  */
 package com.store.goods.vo;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
 import com.store.goods.entity.GoodsType;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import io.swagger.annotations.ApiModel;
+import org.springblade.core.tool.node.INode;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 商品类别表视图实体类
@@ -30,7 +35,26 @@ import io.swagger.annotations.ApiModel;
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ApiModel(value = "GoodsTypeVO对象", description = "商品类别表")
-public class GoodsTypeVO extends GoodsType {
+public class GoodsTypeVO extends GoodsType implements INode<GoodsTypeVO> {
 	private static final long serialVersionUID = 1L;
 
+
+	/**
+	 * 子孙节点
+	 */
+	@JsonInclude(JsonInclude.Include.NON_EMPTY)
+	private List<GoodsTypeVO> children;
+	/**
+	 * 是否有子孙节点
+	 */
+	@JsonInclude(JsonInclude.Include.NON_EMPTY)
+	private Boolean hasChildren;
+
+	@Override
+	public List<GoodsTypeVO> getChildren() {
+		if (this.children == null) {
+			this.children = new ArrayList<>();
+		}
+		return this.children;
+	}
 }

+ 43 - 0
blade-service-api/trade-finance-api/src/main/java/com/trade/finance/dto/ApplyDTO.java

@@ -0,0 +1,43 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package com.trade.finance.dto;
+
+import com.trade.finance.entity.Acc;
+import com.trade.finance.entity.Items;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * 财务账单数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2021-11-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ApplyDTO extends Acc {
+	private static final long serialVersionUID = 1L;
+
+	@ApiModelProperty(value = "list对象")
+	private List<Items> itemsList;
+
+	@ApiModelProperty(value = "货款类型: 申请 收费 付费")
+	private String billType;
+}

+ 19 - 1
blade-service-api/trade-finance-api/src/main/java/com/trade/finance/entity/Items.java

@@ -174,6 +174,24 @@ public class Items implements Serializable {
 
 
 		@ApiModelProperty(value = "参考号(进口和出口 主提单号)")
-		private String srcBillNO;
+		private String srcBillNo;
 
+
+		@ApiModelProperty(value = "付款类型: 采购 销售 收货 发货")
+		private String itemType;
+
+	/**
+	 * 来源主表(业务模块 主表 id)
+	 */
+	@ApiModelProperty(value = "来源主表(业务模块 主表 id)")
+	@TableField("Src_parent_id")
+	private Long srcParentId;
+
+	@ApiModelProperty(value = "关联账单表id(申请结算-请核时候绑定accId)")
+	@TableField("acc_id")
+	private Long accId;
+
+	@ApiModelProperty(value = "费用类型")
+	@TableField("cost_type")
+	private String costType;
 }

+ 3 - 0
blade-service-api/trade-finance-api/src/main/java/com/trade/finance/entity/Settlement.java

@@ -205,5 +205,8 @@ public class Settlement  implements Serializable {
 	@TableField(exist = false)
 	private List<Map<String,Object>> customerModel;
 
+	@ApiModelProperty(value = "清核状态")
+	private String checkStatus;
+
 
 }

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

@@ -89,6 +89,8 @@ public class DeliveryController extends BladeController {
 		lambdaQueryWrapper.eq(Delivery::getTenantId,SecureUtil.getTenantId());
 		lambdaQueryWrapper.eq(Delivery::getBillType,OrderTypeEnum.SHIP.getType());
 		lambdaQueryWrapper.eq(Delivery::getTradeType,OrderTypeEnum.DOMESTIC.getType());
+		lambdaQueryWrapper.eq(delivery.getSalesCompany()!=null,Delivery::getSalesCompany,delivery.getSalesCompany());
+		lambdaQueryWrapper.like(StringUtils.isNotBlank(delivery.getPurchaseMode()),Delivery::getPurchaseMode,delivery.getPurchaseMode());
 		lambdaQueryWrapper.ge(Func.isNotEmpty(delivery.getCreateStartTime()),Delivery::getCreateTime,delivery.getCreateStartTime());//制单日期开始
 		lambdaQueryWrapper.le(Func.isNotEmpty(delivery.getCreateEndTime()),Delivery::getCreateTime,delivery.getCreateEndTime());//制单日期结束
 		lambdaQueryWrapper.ge(Func.isNotEmpty(delivery.getBusinessStartDate()),Delivery::getBusinessDate,delivery.getBusinessStartDate());//发货日期开始

+ 4 - 4
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/entrance/EntranceOrderController.java

@@ -145,10 +145,10 @@ public class EntranceOrderController extends BladeController {
 				//获取订单明细
 				List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", item.getId()).eq("is_deleted", 0));
 				if (CollectionUtils.isNotEmpty(list)){
-					//item.setOrderQuantity(list.stream().map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO,BigDecimal::add));//数量合计
-					//item.setAmount(list.stream().map(OrderItems::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add));//销售金额
-					//item.setPurchaseAmount(list.stream().map(OrderItems::getPurchaseAmount).reduce(BigDecimal.ZERO,BigDecimal::add));//采购金额
-					item.setActualQuantity(list.stream().map(OrderItems::getActualQuantity).reduce(BigDecimal.ZERO,BigDecimal::add));//发货数量
+					item.setOrderQuantity(list.stream().filter(e->e.getOrderQuantity()!=null).map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO,BigDecimal::add));//数量合计
+					item.setAmount(list.stream().filter(e->e.getAmount()!=null).map(OrderItems::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add));//销售金额
+					item.setPurchaseAmount(list.stream().filter(e->e.getPurchaseAmount()!=null).map(OrderItems::getPurchaseAmount).reduce(BigDecimal.ZERO,BigDecimal::add));//采购金额
+					item.setActualQuantity(list.stream().filter(e->e.getActualQuantity()!=null).map(OrderItems::getActualQuantity).reduce(BigDecimal.ZERO,BigDecimal::add));//发货数量
 				}
 
 			});

+ 32 - 2
blade-service/store-goods/src/main/java/com/store/goods/controller/GoodsTypeController.java

@@ -23,9 +23,13 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 
+import org.springblade.client.goods.enums.GoodsTypeEnum;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.AesUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -34,6 +38,8 @@ import com.store.goods.vo.GoodsTypeVO;
 import com.store.goods.service.IGoodsTypeService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.List;
+
 /**
  * 商品类别表 控制器
  *
@@ -111,7 +117,7 @@ public class GoodsTypeController extends BladeController {
 		return R.status(goodsTypeService.saveOrUpdate(goodsType));
 	}
 
-	
+
 	/**
 	 * 删除 商品类别表
 	 */
@@ -122,5 +128,29 @@ public class GoodsTypeController extends BladeController {
 		return R.status(goodsTypeService.removeByIds(Func.toLongList(ids)));
 	}
 
-	
+	/**
+	 * 获取商品类别树形结构
+	 *
+	 * @return
+	 */
+	@GetMapping("/tree")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "树形结构", notes = "树形结构")
+	public R<List<GoodsTypeVO>> tree(String tenantId, BladeUser bladeUser) {
+		List<GoodsTypeVO> tree = goodsTypeService.tree(AuthUtil.getTenantId());
+		return R.data(tree);
+	}
+
+	/**
+	 * 懒加载获取部门树形结构
+	 */
+	@GetMapping("/lazy-tree")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "懒加载树形结构", notes = "树形结构")
+	public R<List<GoodsTypeVO>> lazyTree(String tenantId, Long parentId, BladeUser bladeUser) {
+		List<GoodsTypeVO> tree = goodsTypeService.lazyTree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()), parentId);
+		return R.data(tree);
+	}
+
+
 }

+ 82 - 0
blade-service/store-goods/src/main/java/com/store/goods/controller/OrderController.java

@@ -32,8 +32,11 @@ import javax.validation.Valid;
 
 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.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.store.goods.entity.Order;
@@ -41,7 +44,9 @@ import com.store.goods.vo.OrderVO;
 import com.store.goods.service.IOrderService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 订单表 控制器
@@ -63,6 +68,8 @@ public class OrderController extends BladeController {
 
 	private final IGoodsItemsService goodsItemsService;
 
+	private final IUserClient userClient;
+
 	/**
 	 * 查看订单详情
 	 */
@@ -96,6 +103,40 @@ public class OrderController extends BladeController {
 	@ApiOperation(value = "平台/收货人-查看订单列表", notes = "传入order")
 	public R<IPage<Order>> list(Order order, Query query) {
 		IPage<Order> pages = orderService.page(Condition.getPage(query), Condition.getQueryWrapper(order));
+		List<Order> records = pages.getRecords();
+		if(!CollectionUtils.isEmpty(records))
+		{
+			records.forEach(e->{
+				e.setOrderAddress(addressService.getById(e.getAddressId()));
+				LambdaQueryWrapper<OrderItems> itemsLambdaQueryWrapper=new LambdaQueryWrapper<>();
+				itemsLambdaQueryWrapper.eq(OrderItems::getOrderId,e.getId());
+				itemsLambdaQueryWrapper.eq(OrderItems::getIsDeleted,0);
+				List<OrderItems> list = orderItemsService.list(itemsLambdaQueryWrapper);
+				if(CollectionUtils.isNotEmpty(list))
+				{
+					list.forEach(k->{
+						GoodsItems goodsItems = goodsItemsService.getById(k.getItemsId());
+						k.setPicture(goodsItems.getPriture());
+						k.setCName(goodsItems.getCName());
+					});
+				}
+				e.setItemList(list);
+				//下单人信息
+				R<User> user= userClient.userInfoById(e.getUserId());
+				if(user.isSuccess())
+				{
+                    e.setCustomerName(user.getData().getRealName());
+                    e.setCustomerPhone(user.getData().getPhone());
+				}
+				//收货人信息
+				R<User> Consignee = userClient.userInfoById(e.getOrderAddress().getUserId());
+				if(Consignee.isSuccess())
+				{
+                    e.setConsigneeName(Consignee.getData().getRealName());
+                    e.setConsigneePhone(Consignee.getData().getPhone());
+				}
+			});
+		}
 		return R.data(pages);
 	}
 
@@ -179,4 +220,45 @@ public class OrderController extends BladeController {
 	}
 
 
+	/**
+	 * 统计各订单状态数量
+	 * */
+	 @GetMapping("countOrderStatus")
+	 @ApiOperationSupport(order = 8)
+	 @ApiOperation(value = "统计各订单状态数量", notes = "无需传入")
+	 public R countOrderStatus()
+	 {
+		 Map<String,Object> map=new HashMap<>();
+		 map.put("obligation",0);
+		 map.put("waitDeliver",0);
+		 map.put("dispatched",0);
+		 map.put("waitAppraise",0);
+		 map.put("afterSales",0);
+		 LambdaQueryWrapper<Order> orderLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		 orderLambdaQueryWrapper.eq(Order::getIsDeleted,0);
+		 orderLambdaQueryWrapper.eq(Order::getTenantId, AuthUtil.getTenantId());
+		 orderLambdaQueryWrapper.eq(Order::getUserId,AuthUtil.getTenantId());
+		 List<Order> orderList = orderService.list();
+		 if(CollectionUtils.isNotEmpty(orderList))
+		 {
+			 //obligation 待付款
+			 long count1 = orderList.stream().filter(e -> e.getOrderStatus() == 0).count();
+			 map.put("obligation",count1);
+			 //waitDeliver 待发货
+			 long count2 = orderList.stream().filter(e -> e.getOrderStatus() == 1).count();
+			 map.put("waitDeliver",count2);
+			 //dispatched 待收货
+			 long count3 = orderList.stream().filter(e -> e.getOrderStatus() == 2).count();
+			 map.put("dispatched",count3);
+			 //waitAppraise 待评价
+			 long count4 = orderList.stream().filter(e -> e.getOrderStatus() == 3).count();
+			 map.put("waitAppraise",count4);
+			 //afterSales  售后中
+			 long count5 = orderList.stream().filter(e -> e.getOrderStatus() == 6).count();
+			 map.put("afterSales",count5);
+		 }
+		 return R.data(map);
+
+	 }
+
 }

+ 20 - 0
blade-service/store-goods/src/main/java/com/store/goods/mapper/GoodsTypeMapper.java

@@ -20,6 +20,8 @@ import com.store.goods.entity.GoodsType;
 import com.store.goods.vo.GoodsTypeVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+
 import java.util.List;
 
 /**
@@ -39,4 +41,22 @@ public interface GoodsTypeMapper extends BaseMapper<GoodsType> {
 	 */
 	List<GoodsTypeVO> selectGoodsTypePage(IPage page, GoodsTypeVO goodsType);
 
+	/**
+	 * 获取树形节点
+	 *
+	 * @param tenantId
+	 * @param
+	 * @return
+	 */
+	List<GoodsTypeVO> tree(@Param("tenantId") String tenantId);
+
+	/**
+	 * 懒加载
+	 * @param tenantId
+	 * @param parentId
+	 * @param
+	 * @return
+	 */
+	List<GoodsTypeVO> lazyTree(@Param("tenantId") String tenantId, @Param("parentId") Long parentId);
+
 }

+ 52 - 0
blade-service/store-goods/src/main/java/com/store/goods/mapper/GoodsTypeMapper.xml

@@ -21,9 +21,61 @@
         <result column="is_deleted" property="isDeleted"/>
     </resultMap>
 
+    <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
+        <id column="id" property="id"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="title" property="title"/>
+        <result column="value" property="value"/>
+        <result column="key" property="key"/>
+        <result column="has_children" property="hasChildren"/>
+    </resultMap>
+
 
     <select id="selectGoodsTypePage" resultMap="goodsTypeResultMap">
         select * from store_goods_type where is_deleted = 0
     </select>
 
+    <select id="tree" resultMap="treeNodeResultMap">
+        SELECT
+        id,
+        parent_id,
+        cname AS title,
+        id AS "value",
+        id AS "key"
+        FROM
+        store_goods_type
+        WHERE
+        is_deleted = 0
+        and status = 0
+        <if test="tenantId!=null and tenantId!=''">
+            and tenant_id = #{tenantId}
+        </if>
+        ORDER BY sort
+    </select>
+
+    <select id="lazyTree" resultMap="treeNodeResultMap" >
+        SELECT
+        dept.id,
+        dept.parent_id,
+        dept.cname AS title,
+        dept.id AS "value",
+        dept.id AS "key",
+        (
+        SELECT
+        CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
+        FROM
+        store_goods_type
+        WHERE
+        parent_id = dept.id and is_deleted = 0 and status = 0
+        ) AS "has_children"
+        FROM
+        store_goods_type dept
+        WHERE
+        dept.parent_id = #{param2} AND dept.is_deleted = 0
+        and dept.status = 0
+        <if test="param1!=null and param1!=''">
+            and dept.tenant_id = #{param1}
+        </if>
+        ORDER BY dept.sort
+    </select>
 </mapper>

+ 20 - 0
blade-service/store-goods/src/main/java/com/store/goods/service/IGoodsTypeService.java

@@ -21,6 +21,8 @@ import com.store.goods.vo.GoodsTypeVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.List;
+
 /**
  * 商品类别表 服务类
  *
@@ -38,4 +40,22 @@ public interface IGoodsTypeService extends IService<GoodsType> {
 	 */
 	IPage<GoodsTypeVO> selectGoodsTypePage(IPage<GoodsTypeVO> page, GoodsTypeVO goodsType);
 
+	/**
+	 * 树形结构
+	 *
+	 * @param tenantId
+	 * @param
+	 * @return
+	 */
+	List<GoodsTypeVO> tree(String tenantId);
+
+	/**
+	 * 懒加载树形结构
+	 *
+	 * @param tenantId
+	 * @param id
+	 * @param
+	 * @return
+	 */
+	List<GoodsTypeVO> lazyTree(String tenantId, Long id);
 }

+ 21 - 0
blade-service/store-goods/src/main/java/com/store/goods/service/impl/GoodsTypeServiceImpl.java

@@ -16,14 +16,19 @@
  */
 package com.store.goods.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.store.goods.entity.GoodsType;
 import com.store.goods.vo.GoodsTypeVO;
 import com.store.goods.mapper.GoodsTypeMapper;
 import com.store.goods.service.IGoodsTypeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.List;
+
 /**
  * 商品类别表 服务实现类
  *
@@ -38,4 +43,20 @@ public class GoodsTypeServiceImpl extends ServiceImpl<GoodsTypeMapper, GoodsType
 		return page.setRecords(baseMapper.selectGoodsTypePage(page, goodsType));
 	}
 
+	@Override
+	public List<GoodsTypeVO> tree(String tenantId) {
+		if (StringUtils.isBlank(tenantId)) {
+			tenantId = SecureUtil.getTenantId();
+		}
+		return ForestNodeMerger.merge(baseMapper.tree(tenantId));
+	}
+
+	@Override
+	public List<GoodsTypeVO> lazyTree(String tenantId, Long parentId) {
+		if (StringUtils.isBlank(tenantId)) {
+			tenantId = SecureUtil.getTenantId();
+		}
+		return baseMapper.lazyTree(tenantId, parentId);
+	}
+
 }

+ 2 - 0
blade-service/store-goods/src/main/java/com/store/goods/service/impl/OrderServiceImpl.java

@@ -126,6 +126,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			orderStockChangeMapper.insert(stockChange);
 			//开始扣库存
 			goodsItems.setStock(newStock);
+			//增加已购记录
+			goodsItems.setSold(goodsItems.getSold()==null?new BigDecimal("1"):goodsItems.getSold().add(new BigDecimal("1")));
 			goodsItems.setUpdateTime(new Date());
 			goodsItems.setUpdateUser(AuthUtil.getUserId());
 			goodsItemsMapper.updateById(goodsItems);

+ 31 - 4
blade-service/trade-finance/src/main/java/com/trade/finance/controller/SettlementController.java

@@ -18,6 +18,7 @@ package com.trade.finance.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.trade.finance.dto.ApplyDTO;
 import com.trade.finance.dto.SettlementDTO;
 import com.trade.finance.entity.Acc;
 import com.trade.finance.entity.Items;
@@ -26,12 +27,14 @@ import com.trade.finance.service.IItemsService;
 import com.trade.finance.service.ISettlementService;
 import com.trade.finance.vo.SettlementVO;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 
+import lombok.Data;
 import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.core.mp.support.Condition;
@@ -125,7 +128,7 @@ public class SettlementController extends BladeController {
 	public R modify(@RequestBody SettlementDTO dto)
 	{
 		settlementService.modify(dto);
-		return R.success("操作成功");
+		return R.data(dto);
 	}
 
 	/**
@@ -174,17 +177,41 @@ public class SettlementController extends BladeController {
 	@PostMapping("/apply")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "请货款(收费/付费)", notes = "传入Finance_items")
-	public R apply(@RequestBody  List<Items> itemsList,@RequestParam(value = "billType",required = true) String billType)
+	public R apply(@RequestBody ApplyDTO dto)
 	{
-          if(CollectionUtils.isEmpty(itemsList))
+          if(CollectionUtils.isEmpty(dto.getItemsList()))
           {
           	throw new SecurityException("传入数据不能为空");
 		  }
-		  settlementService.apply(itemsList,billType);
+		  settlementService.apply(dto.getItemsList(),dto.getBillType());
           return R.success("操作成功");
 	}
 
 
+	/**
+	 * 付款申请-清核
+	 * */
+	@PostMapping("/check")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "付款申请-清核", notes = "传入付款申请对象")
+	public R check (@RequestBody Settlement settlement)
+	{
+		settlementService.check(settlement);
+		return R.data(settlement);
+	}
+
+
+	/**
+	 * 销售-收款结算
+	 * */
+	@PostMapping("/paymentApply")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "付销售-收款结算-生成-销售收费账单", notes = "传入销售申请对象")
+	public R paymentApply (@RequestBody ApplyDTO dto)
+	{
+		settlementService.paymentApply(dto.getItemsList(),dto.getBillType());
+		return R.success("操作成功");
+	}
 
 
 }

+ 4 - 0
blade-service/trade-finance/src/main/java/com/trade/finance/service/ISettlementService.java

@@ -48,4 +48,8 @@ public interface ISettlementService extends IService<Settlement> {
 
 	void apply(List<Items> itemsList,String billType);
 
+	void check(Settlement settlement);
+
+	void paymentApply(List<Items> itemsList, String billType);
+
 }

+ 1 - 1
blade-service/trade-finance/src/main/java/com/trade/finance/service/impl/AccServiceImpl.java

@@ -103,7 +103,7 @@ public class AccServiceImpl extends ServiceImpl<AccMapper, Acc> implements IAccS
 			items.setExchangeRate(k.getExchangeRate());
 			items.setAmount(k.getAmount());
 			items.setSrcOrderno(k.getAccSysNo());
-			items.setSrcBillNO(k.getSrcBillNo());
+			items.setSrcBillNo(k.getSrcBillNo());
 			items.setTaxRate(k.getTaxRate());
 			/*items.setSettlmentAmount(k.getSettlementAmount());*///核销金额
 

+ 82 - 3
blade-service/trade-finance/src/main/java/com/trade/finance/service/impl/SettlementServiceImpl.java

@@ -17,12 +17,15 @@
 package com.trade.finance.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.trade.finance.dto.SettlementDTO;
+import com.trade.finance.entity.Acc;
 import com.trade.finance.entity.Files;
 import com.trade.finance.entity.Items;
 import com.trade.finance.entity.Settlement;
+import com.trade.finance.mapper.AccMapper;
 import com.trade.finance.mapper.ItemsMapper;
 import com.trade.finance.mapper.SettlementMapper;
 import com.trade.finance.service.ISettlementService;
@@ -37,6 +40,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;
 
@@ -53,6 +57,8 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
    private ItemsMapper itemsMapper;
 
 	private ISerialClient serialClient;//生成系统编号
+	@Autowired
+	private AccMapper accMapper;
 
 	@Override
 	public IPage<SettlementVO> selectSettlementPage(IPage<SettlementVO> page, SettlementVO settlement) {
@@ -66,9 +72,9 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 		Settlement model=new Settlement();
 		BeanUtils.copyProperties(settlementDTO,model);
 		List<Files> filesList = settlementDTO.getFilesList();
-		List<Items> itemsList = settlementDTO.getItemsList();
+ 		List<Items> itemsList = settlementDTO.getItemsList();
 		//如果id=null, 无论主表还是从表, 必然都是新增
-		Long id = settlementDTO.getId();
+ 		Long id = settlementDTO.getId();
 		if(id==null)
 		{
 
@@ -88,6 +94,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 					e.setCreateUser(AuthUtil.getUserId());
 					e.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 					itemsMapper.insert(e);
+					payAcc(settlementDTO,e);
 				});
 			}
 		}
@@ -113,6 +120,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 						e.setCreateUser(AuthUtil.getUserId());
 						e.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 						itemsMapper.insert(e);
+						payAcc(settlementDTO,e);
 					}
 					else
 					{
@@ -132,19 +140,36 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 
 	}
 
+	public void  payAcc(SettlementDTO settlementDTO,Items items)
+	{
+		Long accId = items.getAccId();
+		Acc acc = accMapper.selectById(accId);
+		if(acc==null)
+		{
+		   throw new SecurityException("扣款账单失败");
+		}
+		//结算成功后,更新acc表金额,采购收费 销售付费
+		acc.setSettlementAmount(acc.getSettlementAmount()!=null?acc.getSettlementAmount().add(items.getAmount()):new BigDecimal("0").add(items.getAmount()));
+		accMapper.updateById(acc);
+	}
+
 	@Override
 	@Transactional
 	public void apply(List<Items> itemsList, String billType)
 	{
-           Settlement settlement=new Settlement();
+		BigDecimal total = itemsList.stream().filter(e -> e.getAmount() != null).map(Items::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		Settlement settlement=new Settlement();
 		   settlement.setBillType(billType);
 		   settlement.setCorpId(itemsList.get(0).getCorpId());
+		   settlement.setSrcOrderno(itemsList.get(0).getSrcOrderno());
 		   //todo 系统编号暂时按时间戳, 后续按正式
 		   settlement.setSysNo(String.valueOf(System.currentTimeMillis()));
 		   settlement.setCreateTime(new Date());
+		   settlement.setAmount(total);
 		   settlement.setTenantId(AuthUtil.getTenantId());
 		   settlement.setCreateUser(AuthUtil.getUserId());
 		   settlement.setStatus(0);
+		   settlement.setCheckStatus("未请核");
 		   baseMapper.insert(settlement);
 
 		   itemsList.forEach(e->{
@@ -157,4 +182,58 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 
 	}
 
+	@Override
+	@Transactional
+	public void check(Settlement settlement)
+	{
+		//目前清核直接通过
+		LambdaQueryWrapper<Items> itemsLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		itemsLambdaQueryWrapper.eq(Items::getPid,settlement.getId());
+		List<Items> items = itemsMapper.selectList(itemsLambdaQueryWrapper);
+		if(!CollectionUtils.isEmpty(items))
+		{
+			//有几个申请明细 就生成几个账单明细
+			items.forEach(e->{
+				  Acc acc=new Acc();
+                  BeanUtils.copyProperties(e,acc);
+				  acc.setId(null);
+				  acc.setAccSysNo(e.getSrcOrderno());
+				  acc.setSrcParentId(e.getSrcParentId());
+				  acc.setBillType(settlement.getBillType());
+				  acc.setCreateTime(new Date());
+				  acc.setStatus(0);
+				  acc.setCreateUser(AuthUtil.getUserId());
+				  acc.setCostType(e.getCostType());
+				  accMapper.insert(acc);
+
+				  //绑定accId,从申请表传递给结算表,后续结算时操作账单表的结算金额
+				  e.setAccId(acc.getId());
+				  itemsMapper.updateById(e);
+
+			});
+		}
+		settlement.setCheckStatus("请核成功");
+		baseMapper.updateById(settlement);
+	}
+
+	@Override
+	@Transactional
+	public void paymentApply(List<Items> itemsList, String billType)
+	{
+		itemsList.forEach(e->{
+			Acc acc=new Acc();
+			BeanUtils.copyProperties(e,acc);
+			acc.setId(null);
+			acc.setAccSysNo(e.getSrcOrderno());
+			acc.setSrcParentId(e.getSrcParentId());
+			acc.setBillType(billType);
+			acc.setCreateTime(new Date());
+			acc.setStatus(0);
+			acc.setCostType(e.getCostType());
+			acc.setCreateUser(AuthUtil.getUserId());
+			accMapper.insert(acc);
+		});
+
+	}
+
 }