Browse Source

达沃特金蝶科目修改

lichao 3 years ago
parent
commit
801ecd0fd7
14 changed files with 588 additions and 48 deletions
  1. 6 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/CorpsBank.java
  2. 6 0
      blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/vojo/Settlement.java
  3. 1 0
      blade-service/blade-client/src/main/java/org/springblade/client/corps/mapper/CorpsBankMapper.xml
  4. 14 3
      blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderIndexController.java
  5. 93 37
      blade-service/blade-land/src/main/java/org/springblade/land/mapper/OrderMapper.xml
  6. 60 4
      blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderServiceImpl.java
  7. 55 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/excel/PackingFeeExcel.java
  8. 6 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.java
  9. 37 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml
  10. 1 0
      blade-service/trade-finance/src/main/java/org/springblade/finance/mapper/SettlementMapper.xml
  11. 15 4
      blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java
  12. 4 0
      blade-service/trade-purchase/pom.xml
  13. 90 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/excel/PurchaseOrderExcel.java
  14. 200 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/PurchaseOrderController.java

+ 6 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/CorpsBank.java

@@ -123,5 +123,11 @@ public class CorpsBank implements Serializable {
 	@ApiModelProperty(value = "是否已删除")
 	private Integer isDeleted;
 
+	/**
+	 * 科目编码
+	 */
+	@ApiModelProperty(value = "科目编码")
+	private String subjectNumber;
+
 
 }

+ 6 - 0
blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/vojo/Settlement.java

@@ -193,6 +193,12 @@ public class Settlement  implements Serializable {
 	@ApiModelProperty(value = "收付款状态")
 	private String financeStatus;
 
+	/**
+	 * 科目编号
+	 */
+	@ApiModelProperty(value = "科目编号")
+	private String subjectNumber;
+
 	@ApiModelProperty(value = "租户id")
 	private String tenantId;
 

+ 1 - 0
blade-service/blade-client/src/main/java/org/springblade/client/corps/mapper/CorpsBankMapper.xml

@@ -20,6 +20,7 @@
         <result column="update_time" property="updateTime"/>
         <result column="status" property="status"/>
         <result column="is_deleted" property="isDeleted"/>
+        <result column="subject_number" property="subjectNumber"/>
     </resultMap>
 
 

+ 14 - 3
blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderIndexController.java

@@ -167,16 +167,27 @@ public class OrderIndexController extends BladeController {
 		mapTemp.put("mold", mold);
 		tableTemp.add(mapTemp);
 
+		long active = 0;
 		// 运行中
-		long active = itemList.stream().filter(item -> item.getStatus() != 0 && item.getStatus() != 1 && item.getStatus() != 4).count();
+		if (mold == 2){
+			active = itemList.stream().filter(item -> item.getStatus() != 0 && item.getStatus() != 1 && item.getStatus() != 5).count();
+		}else {
+			active = itemList.stream().filter(item -> item.getStatus() != 0 && item.getStatus() != 1 && item.getStatus() != 4).count();
+		}
 		mapTemp = new HashMap<>();
 		mapTemp.put("name", "运行中");
 		mapTemp.put("value", active);
 		mapTemp.put("mold", mold);
 		tableTemp.add(mapTemp);
 
+		long finish = 0;
 		// 已完成
-		long finish = itemList.stream().filter(item -> item.getStatus() == 4).count();
+		if (mold == 2)
+		{
+			finish = itemList.stream().filter(item -> item.getStatus() == 5).count();
+		}else {
+			finish = itemList.stream().filter(item -> item.getStatus() == 4).count();
+		}
 		mapTemp = new HashMap<>();
 		mapTemp.put("name", "已完成");
 		mapTemp.put("value", finish);
@@ -200,7 +211,7 @@ public class OrderIndexController extends BladeController {
 	}
 
 	/**
-	 * 业务详情
+	 * 首页 散货业务详情
 	 */
 	@GetMapping("/biz-BulkLoadDetail")
 	@ApiOperationSupport(order = 4)

+ 93 - 37
blade-service/blade-land/src/main/java/org/springblade/land/mapper/OrderMapper.xml

@@ -26,58 +26,110 @@
 
     <select id="selectAcctList" resultType="org.springblade.land.vo.OrderAcctVO">
         select t1.id as orderId,
-               t2.id as itemId,
-               t1.corp_id as corpId,
-               t3.cname as corpName,
-               t3.short_name as corpShortName,
-               t1.salesman,
-               t5.name as salesmanName,
-               t1.salesman_dept as salesmanDept,
-               t1.create_user as createUser,
-               t1.dispatcher,
-               t7.name as dispatcherName,
-               t1.dispatch_dept as dispatchDept,
-               t6.dept_name as dispatchDeptName,
-               t2.arrival_time as arrivalTime,
-               t1.address_detail as addressDetail,
-               t1.receipt_no as receiptNo,
-               t1.bill_no as billNo,
-               t1.station,
-               concat(t2.ctn_type, '×', sum(t2.ctn_quantity)) as ctnDetail,
-               t2.fleet_id as fleetId,
-               t4.cname as fleetName,
-               t4.short_name as fleetShortName,
-               t2.plate_no,
-               sum(t2.land_amount_c) as landAmountC,
-               sum(t2.land_amount_d) as landAmountD,
-               t2.confirm_status as confirmStatus,
-               t2.status,
-               t2.remarks
+            t2.id as itemId,
+            t1.corp_id as corpId,
+            t3.cname as corpName,
+            t3.short_name as corpShortName,
+            t1.salesman,
+            t5.name as salesmanName,
+            t1.salesman_dept as salesmanDept,
+            t1.create_user as createUser,
+            t1.dispatcher,
+            t7.name as dispatcherName,
+            t1.dispatch_dept as dispatchDept,
+            t6.dept_name as dispatchDeptName,
+            (CASE WHEN
+            t1.shipping_mode != '散货'
+            THEN
+            t2.arrival_time
+            ELSE
+            t1.arrival_time
+            END) as arrivalTime,
+            t1.address_detail as addressDetail,
+            t1.receipt_no as receiptNo,
+            t1.bill_no as billNo,
+            t1.station,
+            concat(t2.ctn_type, '×', sum(t2.ctn_quantity)) as ctnDetail,
+            (CASE WHEN
+            t1.shipping_mode != '散货'
+            THEN
+            t2.fleet_id
+            ELSE
+            t1.fleet_id
+            END) as fleetId,
+
+            (CASE WHEN
+            t1.shipping_mode != '散货'
+            THEN
+            t4.cname
+            ELSE
+            t8.cname
+            END) as fleetName,
+
+            (CASE WHEN
+            t1.shipping_mode != '散货'
+            THEN
+            t4.short_name
+            ELSE
+            t8.short_name
+            END) as fleetShortName,
+
+            (CASE WHEN
+            t1.shipping_mode != '散货'
+            THEN
+            t2.plate_no
+            ELSE
+            t1.plate_no
+            END) as plate_no,
+            sum(t2.land_amount_c) as landAmountC,
+            sum(t2.land_amount_d) as landAmountD,
+            t2.confirm_status as confirmStatus,
+            (CASE WHEN
+            t1.shipping_mode != '散货'
+            THEN
+            t2.status
+            ELSE
+            t1.status
+            END) as status,
+
+            (CASE WHEN
+            t1.shipping_mode != '散货'
+            THEN
+            t2.remarks
+            ELSE
+            t1.remarks
+            END) as remarks
         from land_order t1
                  left join land_order_item t2 on t1.id = t2.order_id
                  left join basic_corps_desc t3 on t1.corp_id = t3.id
                  left join basic_corps_desc t4 on t2.fleet_id = t4.id
+                left join basic_corps_desc t8 on t1.fleet_id = t4.id
                  left join blade_user t5 on t1.salesman = t5.id
                  left join blade_dept t6 on t1.dispatch_dept = t6.id
                  left join blade_user t7 on t1.dispatcher = t7.id
         <where>
             t1.tenant_id = #{acct.tenantId}
-            and t2.kind = '2'
             and t1.is_deleted = 0
+            <if test="acct.shippingMode != '散货'">and t2.kind = '2'</if>
             <if test="acct.corpName != null and acct.corpName != ''">and t3.cname like concat('%', #{acct.corpName}, '%')</if>
             <if test="acct.salesmanName != null and acct.salesmanName != ''">and t5.name like concat('%', #{acct.salesmanName}, '%')</if>
             <if test="acct.corpShortName != null and acct.corpShortName != ''">and t3.short_name like concat('%', #{acct.corpShortName}, '%')</if>
 
-            <if test="acct.fleetId != null">and t2.fleet_id = #{acct.fleetId}</if>
+            <if test="acct.fleetId != null and acct.shippingMode != '散货'">and t2.fleet_id = #{acct.fleetId}</if>
+            <if test="acct.fleetId != null and acct.shippingMode == '散货'">and t1.fleet_id = #{acct.fleetId}</if>
             <if test="acct.fleetShortName != null and acct.fleetShortName != ''">and t4.short_name like concat('%', #{acct.fleetShortName}, '%')</if>
             <if test="acct.addressDetail != null and acct.addressDetail != ''">and t1.address_detail like concat('%', #{acct.addressDetail}, '%')</if>
             <if test="acct.receiptNo != null and acct.receiptNo != ''">and t1.receipt_no like concat('%', #{acct.receiptNo}, '%')</if>
             <if test="acct.billNo != null and acct.billNo != ''">and t1.bill_no like concat('%', #{acct.billNo}, '%')</if>
-            <if test="acct.plateNo != null and acct.plateNo != ''">and t2.plate_no like concat('%', #{acct.plateNo}, '%')</if>
-            <if test="acct.ctnDetail != null and acct.ctnDetail != ''">and t2.ctn_type like concat('%', #{acct.ctnDetail}, '%')</if>
+            <if test="acct.plateNo != null and acct.plateNo != '' and acct.shippingMode != '散货'">and t2.plate_no like concat('%', #{acct.plateNo}, '%')</if>
+            <if test="acct.plateNo != null and acct.plateNo != '' and acct.shippingMode == '散货'">and t1.plate_no like concat('%', #{acct.plateNo}, '%')</if>
+            <if test="acct.ctnDetail != null and acct.ctnDetail != '' and acct.shippingMode != '散货'">and t2.ctn_type like concat('%', #{acct.ctnDetail}, '%')</if>
+
+            <if test="acct.beginArrivalTime != null and acct.beginArrivalTime != '' and acct.shippingMode != '散货'">and t2.arrival_time &gt;= #{acct.beginArrivalTime}</if>
+            <if test="acct.endArrivalTime != null and acct.endArrivalTime != '' and acct.shippingMode != '散货'">and t2.arrival_time &lt;= #{acct.endArrivalTime}</if>
 
-            <if test="acct.beginArrivalTime != null and acct.beginArrivalTime != ''">and t2.arrival_time &gt;= #{acct.beginArrivalTime}</if>
-            <if test="acct.endArrivalTime != null and acct.endArrivalTime != ''">and t2.arrival_time &lt;= #{acct.endArrivalTime}</if>
+            <if test="acct.beginArrivalTime != null and acct.beginArrivalTime != '' and acct.shippingMode = '散货'">and t1.arrival_time &gt;= #{acct.beginArrivalTime}</if>
+            <if test="acct.endArrivalTime != null and acct.endArrivalTime != '' and acct.shippingMode = '散货'">and t1.arrival_time &lt;= #{acct.endArrivalTime}</if>
 
             <if test="acct.salesman != null">and t1.salesman = #{acct.salesman}</if>
             <if test="acct.dispatcher != null">and t1.dispatcher = #{acct.dispatcher}</if>
@@ -88,10 +140,14 @@
                 </foreach>
             </if>
             <if test="acct.shippingMode != null and acct.shippingMode != ''">and t1.shipping_mode = #{acct.shippingMode}</if>
-            <if test="acct.confirmStatus != null">and t2.confirm_status = #{acct.confirmStatus}</if>
-            <if test="acct.status == 1">and t2.status in (0, 1)</if>
-            <if test="acct.status == 2">and t2.status not in (0, 1, 4)</if>
-            <if test="acct.status == 3">and t2.status = 4</if>
+            <if test="acct.confirmStatus != null and acct.shippingMode != '散货'">and t2.confirm_status = #{acct.confirmStatus}</if>
+            <if test="acct.status == 1 and acct.shippingMode != '散货'">and t2.status in (0, 1)</if>
+            <if test="acct.status == 2 and acct.shippingMode != '散货'">and t2.status not in (0, 1, 4)</if>
+            <if test="acct.status == 3 and acct.shippingMode != '散货'">and t2.status = 4</if>
+
+            <if test="acct.status == 1 and acct.shippingMode == '散货'">and t1.status in (0, 1)</if>
+            <if test="acct.status == 2 and acct.shippingMode == '散货'">and t1.status not in (0, 1, 5)</if>
+            <if test="acct.status == 3 and acct.shippingMode == '散货'">and t1.status = 5</if>
         </where>
         group by t1.id, t2.id, t2.plate_no, t2.arrival_time
         order by t2.arrival_time desc

+ 60 - 4
blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderServiceImpl.java

@@ -559,10 +559,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			}
 		}
 
-		//杂费明细
+
 		if (order.getShippingMode().equals("散货")) {
+			//杂费明细
 			List<OrderFee> orderFeeList = order.getOrderFeeList();
-
 			for (OrderFee item : orderFeeList) {
 				if (ObjectUtil.isEmpty(item.getId())) {
 					item.setOrderId(order.getId());
@@ -576,6 +576,37 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					orderFeeMapper.updateById(item);
 				}
 			}
+			//从表明细
+			LambdaQueryWrapper<OrderItem> queryWrapper = new LambdaQueryWrapper<>();
+			queryWrapper.eq(OrderItem::getTenantId, AuthUtil.getTenantId())
+				.eq(OrderItem::getIsDeleted, 0)
+				.eq(OrderItem::getOrderId, order.getId())
+				.eq(OrderItem::getKind, 2);
+			OrderItem orderItem = orderItemMapper.selectOne(queryWrapper);
+			OrderItem item = new OrderItem();
+			if (ObjectUtil.isEmpty(orderItem)){
+				item.setOrderId(order.getId());
+				item.setKind(2);
+				item.setTenantId(AuthUtil.getTenantId());
+				item.setCreateUser(AuthUtil.getUserId());
+				item.setCreateTime(new Date());
+				item.setFleetId(order.getFleetId());
+				item.setDriverId(order.getDriverId());
+				item.setPlateNo(order.getPlateNo());
+				item.setTel(order.getDriverTel());
+				item.setLandAmountD(order.getFreightPay());
+				orderItemMapper.insert(item);
+			}else {
+				item.setTenantId(AuthUtil.getTenantId());
+				item.setUpdateUser(AuthUtil.getUserId());
+				item.setUpdateTime(new Date());
+				item.setFleetId(order.getFleetId());
+				item.setDriverId(order.getDriverId());
+				item.setPlateNo(order.getPlateNo());
+				item.setTel(order.getDriverTel());
+				item.setLandAmountD(order.getFreightPay());
+				orderItemMapper.updateById(item);
+			}
 		}
 
 		StringBuilder addressDetail = new StringBuilder();
@@ -621,7 +652,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	 */
 	@Override
 	public IPage<Order> selectBulkLoadList(Order order, Query query) {
-		LambdaQueryWrapper<Order> orderQueryWrapper = new LambdaQueryWrapper<Order>();
+		LambdaQueryWrapper<Order> orderQueryWrapper = new LambdaQueryWrapper<>();
 		orderQueryWrapper.eq(Order::getShippingMode, "散货")
 			.eq(Order::getTenantId, AuthUtil.getTenantId())
 			.eq(Order::getIsDeleted, 0)
@@ -644,6 +675,26 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 		IPage<Order> pages = baseMapper.selectPage(Condition.getPage(query), orderQueryWrapper);
 		pages.getRecords().forEach(record -> {
+
+			//杂费客户
+			if (!ObjectUtil.isEmpty(record.getId())){
+				LambdaQueryWrapper<OrderFee> feeLambdaQueryWrapper = new LambdaQueryWrapper<>();
+				feeLambdaQueryWrapper.eq(OrderFee::getOrderId, record.getId())
+					.eq(OrderFee::getIsDeleted, 0)
+					.eq(OrderFee::getTenantId, AuthUtil.getTenantId());
+				List<OrderFee> feeList = orderFeeMapper.selectList(feeLambdaQueryWrapper);
+
+				if (!ObjectUtil.isEmpty(feeList)){
+					feeList.forEach(list -> {
+						R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(list.getCorpId());
+						if (corpMessage.isSuccess() && corpMessage.getData() != null) {
+							list.setCorpName(corpMessage.getData().getCname());
+						}
+					});
+					record.setOrderFeeList(feeList);
+				}
+			}
+
 			//客户
 			if (!ObjectUtil.isEmpty(record.getCorpId())) {
 				R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(record.getCorpId());
@@ -1059,6 +1110,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 	private void calculateAcct(List<OrderAcctVO> acctList) {
 		acctList.forEach(acct -> {
+			if (!ObjectUtil.isEmpty(acct.getShippingMode()) && acct.getShippingMode().equals("散货")){
+				acct.setItemId(acct.getOrderId());
+			}
 			List<OrderFee> feeList = orderFeeMapper.selectList(new LambdaQueryWrapper<OrderFee>()
 				.eq(OrderFee::getItemId, acct.getItemId())
 				.eq(OrderFee::getIsDeleted, 0)
@@ -1085,7 +1139,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			acct.setExtraAmountItemD(extraAmountItemD.toString());
 			acct.setExtraAmountC(feeList.stream().filter(e -> e.getType() == 2).reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getAmount()), BigDecimal::add));
 			acct.setExtraAmountItemC(extraAmountItemC.toString());
-			acct.setProfit(acct.getLandAmountD().add(acct.getExtraAmountD()).subtract(acct.getLandAmountC()).subtract(acct.getExtraAmountC()));
+			if (null != acct.getLandAmountD() && null != acct.getExtraAmountD() && null != acct.getLandAmountC() && null != acct.getExtraAmountC()) {
+				acct.setProfit(acct.getLandAmountD().add(acct.getExtraAmountD()).subtract(acct.getLandAmountC()).subtract(acct.getExtraAmountC()));
+			}
 		});
 	}
 

+ 55 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/excel/PackingFeeExcel.java

@@ -0,0 +1,55 @@
+package org.springblade.purchase.sales.excel;
+
+
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ *  统计分析 包装费用导出
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class PackingFeeExcel implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 *  销售订单号
+	 */
+	@ExcelProperty(value = "销售订单号")
+	private String orderNo;
+
+	/**
+	 * 品牌
+	 */
+	@ExcelProperty(value = "品牌")
+	private String brand;
+
+	/**
+	 * 制单日期
+	 */
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@ExcelProperty(value = "制单日期")
+	private Date careteTime;
+
+	/**
+	 * 数量
+	 */
+	@ExcelProperty(value = "数量")
+	private Long quantity;
+
+	/**
+	 * 包装费用
+	 */
+	@ExcelProperty(value = "包装费用")
+	private BigDecimal feesAmount;
+}

+ 6 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.java

@@ -22,6 +22,7 @@ import com.sun.javafx.collections.MappingChange;
 import com.trade.purchase.order.vo.OrderDTO;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.purchase.sales.entity.Order;
+import org.springblade.purchase.sales.excel.PackingFeeExcel;
 import org.springblade.purchase.sales.excel.SalesCommissionExcel;
 import org.springblade.purchase.sales.excel.SalesDetailsExcel;
 import org.springblade.purchase.sales.vo.*;
@@ -106,6 +107,11 @@ public interface OrderMapper extends BaseMapper<Order> {
 	List<SalesDetailsVo> selPackingFee(IPage<SalesDetailsVo> page,@Param("detailsVo") SalesDetailsVo detailsVo);
 
 	/**
+	 * 统计分析 销售人员提成列表导出
+	 */
+	List<PackingFeeExcel> selPackingFeeList(@Param("detailsVo") SalesDetailsVo detailsVo);
+
+	/**
 	 * 首页获取销售趋势
 	 * @param tenantId 租户id
 	 * @param tradeType 贸易类型

+ 37 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml

@@ -750,6 +750,43 @@ ORDER BY
         </where>
         order by BO.create_time desc
     </select>
+
+    <select id="selPackingFeeList" resultType="org.springblade.purchase.sales.excel.PackingFeeExcel">
+        SELECT
+        BO.id AS orderId,
+        BO.order_no as orderNo,
+        BGD.Brand AS brand,
+        BO.create_time AS careteTime,
+        BOI.order_quantity AS quantity,
+        (CASE WHEN
+        BO.package_remarks != '有包装'
+        THEN
+        0.00
+        ELSE
+        BOF.Amount
+        END) AS feesAmount
+        FROM business_order_items AS BOI
+        LEFT JOIN business_order BO ON BOI.pid = BO.id
+        LEFT JOIN basic_goods_desc BGD ON BOI.Item_id = BGD.id
+        LEFT JOIN business_order_fees BOF ON BOF.pid = BO.id
+        LEFT JOIN basic_corps_desc BCD ON BO.Corp_id = BCD.id
+        <where>
+            BOI.is_deleted = 0
+            AND BO.bill_type = 'XS'
+            AND BO.tenant_id = #{detailsVo.tenantId}
+            <if test="detailsVo.brand != null and detailsVo.brand != ''">
+                AND BGD.Brand like concat('%', #{detailsVo.brand}, '%')
+            </if>
+            <if test="detailsVo.beginCreateTime !=null and detailsVo.beginCreateTime != ''">
+                and BO.create_time >= #{detailsVo.beginCreateTime}
+            </if>
+            <if test="detailsVo.endCreateTime !=null and detailsVo.endCreateTime != ''">
+                and BO.create_time &lt;= #{detailsVo.endCreateTime}
+            </if>
+        </where>
+        order by BO.create_time desc
+    </select>
+
     <update id="updateOrderMessage" parameterType="org.springblade.purchase.sales.entity.Order">
         update  business_order
         <trim prefix="SET" suffixOverrides=",">

+ 1 - 0
blade-service/trade-finance/src/main/java/org/springblade/finance/mapper/SettlementMapper.xml

@@ -31,6 +31,7 @@
         <result column="is_deleted" property="isDeleted"/>
         <result column="create_user_name" property="createUserName"/>
         <result column="update_user_name" property="updateUserName"/>
+        <result column="subject_number" property="subjectNumber"/>
     </resultMap>
 
 

+ 15 - 4
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -72,6 +72,7 @@ import org.springblade.system.user.feign.IUserClient;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.stringtemplate.v4.ST;
 
 import javax.net.ssl.*;
 import java.io.*;
@@ -1462,7 +1463,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 
 
 	//金蝶保存凭证测试-采购付款生成凭证
-	public JdyTool.voucher toPurchaseJinDie(Date date, String account, String createUser, String corpName, String corpNumber, String accountId, String groupName, JdTenant jdTenant) {
+	public JdyTool.voucher toPurchaseJinDie(Date date,String subjectNumber, String account, String createUser, String corpName, String corpNumber, String accountId, String groupName, JdTenant jdTenant) {
 		JDYitems item = new JDYitems();
 		item.setDate(new SimpleDateFormat("yyyy-MM-dd").format(date));
 		List<JDYentries> entriesList = new ArrayList<>();
@@ -1482,6 +1483,11 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 		if (dModule == null) {
 			throw new SecurityException("获取采购订单科目号失败");
 		}
+		if (null != subjectNumber && !subjectNumber.equals("")){
+			dModule.setProjectCode(subjectNumber);
+		}else {
+			throw new SecurityException("科目编码为空");
+		}
 		d.setExplanation(dModule.getAbstractStatic() + "-" + corpName);
 		d.setAccount_number(dModule.getProjectCode());
 		d.setDebitamount(account);
@@ -1568,7 +1574,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 
 
 	//金蝶保存凭证测试-销售收款生成凭证
-	public JdyTool.voucher toSaleCollectionJinDie(Date date, String account, String corpName,String corpNumber, String accountId, String groupName, JdTenant jdTenant) {
+	public JdyTool.voucher toSaleCollectionJinDie(Date date,String subjectNumber, String account, String corpName,String corpNumber, String accountId, String groupName, JdTenant jdTenant) {
 		JDYitems item = new JDYitems();
 		item.setDate(new SimpleDateFormat("yyyy-MM-dd").format(date));
 		List<JDYentries> entriesList = new ArrayList<>();
@@ -1588,6 +1594,11 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 		if (dModule == null) {
 			throw new SecurityException("获取销售订单科目号失败");
 		}
+		if (null != subjectNumber && !subjectNumber.equals("")){
+			dModule.setProjectCode(subjectNumber);
+		}else {
+			throw new SecurityException("科目编码为空");
+		}
 		d.setExplanation(dModule.getAbstractStatic() + "-" + corpName);
 		d.setAccount_number(dModule.getProjectCode());
 		d.setDebitamount(account);
@@ -1808,7 +1819,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 			return;
 		}
 		//2.采购收款-保存凭证
-		JdyTool.voucher voucher = toPurchaseJinDie(settlement.getSettlementDate(), account, createUser, corpName, corpNumber, jdTenant.getAccountId(), group.getGroupName(), jdTenant);
+		JdyTool.voucher voucher = toPurchaseJinDie(settlement.getSettlementDate(),settlement.getSubjectNumber(), account, createUser, corpName, corpNumber, jdTenant.getAccountId(), group.getGroupName(), jdTenant);
 		if (voucher == null) {
 			throw new SecurityException("获取凭证信息失败");
 		}
@@ -1872,7 +1883,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 			return;
 		}
 		//2.销售收款-保存凭证
-		JdyTool.voucher voucher = toSaleCollectionJinDie(settlement.getSettlementDate(), account, corpName, corpNumber, jdTenant.getAccountId(), group.getGroupName(), jdTenant);
+		JdyTool.voucher voucher = toSaleCollectionJinDie(settlement.getSettlementDate(),settlement.getSubjectNumber(), account, corpName, corpNumber, jdTenant.getAccountId(), group.getGroupName(), jdTenant);
 		if (voucher == null) {
 			throw new SecurityException("获取凭证信息失败");
 		}

+ 4 - 0
blade-service/trade-purchase/pom.xml

@@ -93,6 +93,10 @@
             <version>2.8.2.RELEASE</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-starter-excel</artifactId>
+        </dependency>
 
     </dependencies>
 

+ 90 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/excel/PurchaseOrderExcel.java

@@ -0,0 +1,90 @@
+package com.trade.purchase.excel;
+
+
+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 com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ *  采购订单导出
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class PurchaseOrderExcel {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 订单号
+	 */
+	@ExcelProperty(value = "采购订单号")
+	private String orderNo;
+
+	/**
+	 * 供应商
+	 */
+	@ExcelProperty(value = "供应商")
+	private String strCorpName;
+
+	/**
+	 * 订单数量
+	 */
+	@ExcelProperty(value = "订单数量")
+	private BigDecimal orderQuantity;
+
+	/**
+	 * 收货数量
+	 */
+	@ExcelProperty(value = "收货数量")
+	private BigDecimal actualQuantity;
+
+	/**
+	 * 采购金额
+	 */
+	@ExcelProperty(value = "采购金额")
+	private BigDecimal orderAmount;
+
+	/**
+	 * 包装要求
+	 */
+	@ExcelProperty(value = "包装要求")
+	private String packageRemarks;
+
+	/**
+	 * 公司户头
+	 */
+	@ExcelProperty(value = "公司户头")
+	private String banksAccountName;
+
+	/**
+	 * 来源单号
+	 */
+	@ExcelProperty(value = "来源单号")
+	private String morderNo;
+
+	/**
+	 * 制单人
+	 */
+	@ExcelProperty("制单人")
+	private String createUserName;
+
+	/**
+	 * 应付金额
+	 */
+	@ExcelProperty(value = "应付金额")
+	private BigDecimal debitAmount;
+
+	/**
+	 * 已付金额
+	 */
+	@ExcelProperty(value = "已付金额")
+	private BigDecimal settlmentAmount;
+}

+ 200 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/PurchaseOrderController.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.trade.purchase.excel.PurchaseOrderExcel;
 import com.trade.purchase.order.dto.OrderSubmitDto;
 import com.trade.purchase.order.entity.Order;
 import com.trade.purchase.order.entity.OrderFees;
@@ -42,7 +43,9 @@ import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
+import org.springblade.core.excel.util.ExcelUtil;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.math.BigDecimal;
 import java.util.*;
@@ -222,6 +225,7 @@ public class PurchaseOrderController extends BladeController {
 		queryWrapper.orderByDesc("create_time");
 		Page<Order> page=new Page<>(current,size);
 		IPage<Order> pages = orderService.page(page,queryWrapper);
+		List<Order> orderList = orderService.list(queryWrapper);
 		List<Order> records = pages.getRecords();
 		if(CollectionUtils.isNotEmpty(records))
 		{
@@ -310,6 +314,202 @@ public class PurchaseOrderController extends BladeController {
 		return R.data(pages);
 	}
 
+	/**
+	 * 销售或采购订单表导出
+	 */
+	@GetMapping("/selOrderExport")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "采购订单表列表导出", notes = "传入order")
+	public void selOrderExport( @RequestParam(name = "current", defaultValue = "1") Integer current,
+					  @RequestParam(name = "size", defaultValue = "10") Integer size,
+					  @RequestParam(value = "billNo",required = false) String billNo,//提单号
+					  @RequestParam(value = "orderNo",required = false) String orderNo,//合同号
+					  @RequestParam(value = "tradeType",required = false) String tradeType,//贸易类型
+					  @RequestParam(value = "strCorpName",required = false) String strCorpName,//供应商名称
+					  @RequestParam(value = "corpId",required = false) String corpId,//供应商id
+					  @RequestParam(value = "strPurchaserName",required = false) String strPurchaserName,//采购商名称
+					  @RequestParam(value = "salesName",required = false) String salesName,//业务员
+
+					  @RequestParam(value = "banksAccountName",required = false) String banksAccountName,//公司户头
+					  @RequestParam(value = "packageRemarks",required = false) String packageRemarks,//包装要求
+					  @RequestParam(value = "createUser",required = false) Long createUser,//制单人
+					  @RequestParam(value = "paymentType",required = false) String paymentType,//付款方式
+					  @RequestParam(value = "createStartTime",required = false) String createStartTime,//制单日期
+					  @RequestParam(value = "createEndTime",required = false) String createEndTime,//制单日期
+
+
+					  @RequestParam(value = "businesStartDate",required = false) String businesStartDate,//订单开始时间  busines_date
+					  @RequestParam(value = "businesEndDate",required = false) String businesEndDate,//订单结束时间
+					  @RequestParam(value = "accountsCollectionStartDate",required = false) String accountsCollectionStartDate,//应收(付)款开始时间  accounts_collection_date
+					  @RequestParam(value = "accountsCollectionEndDate",required = false) String accountsCollectionEndDate,//应收(付)款结束时间
+
+					  @RequestParam(value = "dateOfStartArrival",required = false) String dateOfStartArrival,//实际到港开始日期 date_of_arrival
+					  @RequestParam(value = "dateOfEndArrival",required = false) String dateOfEndArrival,//实际到港结束时间,
+
+					  @RequestParam(value = "requiredDeliveryStartDate",required = false) String requiredDeliveryStartDate,//要求发货开始日期  required_delivery_date
+					  @RequestParam(value = "requiredDeliveryEndDate",required = false) String requiredDeliveryEndDate,//要求发货结束时间
+
+					  @RequestParam(value = "requiredArrivalStartDate",required = false) String requiredArrivalStartDate,//要求到货开始日期  required_arrival_date
+					  @RequestParam(value = "requiredArrivalEndDate",required = false) String requiredArrivalEndDate,//要求到货结束日期
+
+					  @RequestParam(value = "creditStartDate",required = false) String creditStartDate,//信用证到期日-开始日期  credit_date
+					  @RequestParam(value = "creditEndDate",required = false) String creditEndDate,//信用证到期日-结束时间
+					  @RequestParam(value = "gathering",required = false) Integer gathering,//是否付款 0 已付款 1 未付款
+					  Order order,HttpServletResponse response
+	)
+	{
+
+		QueryWrapper<Order> queryWrapper =new QueryWrapper<>();
+		queryWrapper.eq(StringUtils.isNotBlank(tradeType), "trade_type",tradeType);
+
+		//供应商
+		if(StringUtils.isNotBlank(strCorpName))
+		{
+			List<CorpsDesc> corpsDescs = corpsDescClient.listCorpByName(strCorpName);
+			if(CollectionUtils.isNotEmpty(corpsDescs))
+			{
+				List<Long> corpIds = corpsDescs.stream().map(CorpsDesc::getId).collect(Collectors.toList());
+				queryWrapper.in("corp_id",corpIds);
+			}
+		}
+		//采购商
+		if(StringUtils.isNotBlank(strPurchaserName))
+		{
+			List<CorpsDesc> corpsDescs = corpsDescClient.listCorpByName(strPurchaserName);
+			if(CollectionUtils.isNotEmpty(corpsDescs))
+			{
+				List<Long> purchaserIds = corpsDescs.stream().map(CorpsDesc::getId).collect(Collectors.toList());
+				queryWrapper.in("purchaser_id",purchaserIds);
+			}
+		}
+		queryWrapper.like(StringUtils.isNotBlank(banksAccountName),"banks_account_name",banksAccountName);
+		queryWrapper.like(StringUtils.isNotBlank(packageRemarks),"package_remarks",packageRemarks);
+		queryWrapper.like(StringUtils.isNotBlank(salesName),"sales_name",salesName);
+		queryWrapper.like(StringUtils.isNotBlank(orderNo),"order_no",orderNo);
+		queryWrapper.like(StringUtils.isNotBlank(paymentType),"payment_type",paymentType);
+		queryWrapper.eq(StringUtils.isNotBlank(corpId),"corp_id",corpId);
+		queryWrapper.eq("tenant_id",AuthUtil.getTenantId());
+		queryWrapper.eq(createUser!=null,"create_user",createUser);
+		queryWrapper.eq("bill_type",OrderTypeEnum.PURCHASE.getType());
+		queryWrapper.eq(StringUtils.isNotBlank(order.getTradeType()), "trade_type",order.getTradeType());
+		queryWrapper.like(StringUtils.isNotBlank(billNo),"bill_no", billNo);
+		queryWrapper.between(StringUtils.isNotBlank(createStartTime)&&StringUtils.isNotBlank(createEndTime),"create_time",createStartTime,createEndTime);
+		queryWrapper.between(StringUtils.isNotBlank(businesStartDate)&&StringUtils.isNotBlank(businesEndDate),"busines_date",businesStartDate,businesEndDate);
+		queryWrapper.between(StringUtils.isNotBlank(accountsCollectionStartDate)&&StringUtils.isNotBlank(accountsCollectionEndDate),"accounts_collection_date",accountsCollectionStartDate,accountsCollectionEndDate);
+		queryWrapper.between(StringUtils.isNotBlank(dateOfStartArrival)&&StringUtils.isNotBlank(dateOfEndArrival),"date_of_arrival",dateOfStartArrival,dateOfEndArrival);
+		queryWrapper.between(StringUtils.isNotBlank(requiredDeliveryStartDate)&&StringUtils.isNotBlank(requiredDeliveryEndDate),"required_delivery_date",requiredDeliveryStartDate,requiredDeliveryEndDate);
+		queryWrapper.between(StringUtils.isNotBlank(requiredArrivalStartDate)&&StringUtils.isNotBlank(requiredArrivalEndDate),"required_arrival_date",requiredArrivalStartDate,requiredArrivalEndDate);
+		queryWrapper.between(StringUtils.isNotBlank(creditStartDate)&&StringUtils.isNotBlank(creditEndDate),"credit_date",creditStartDate,creditEndDate);
+		if (gathering != null && gathering == 0){
+			queryWrapper.eq("balance_amount",BigDecimal.ZERO);
+		}else if (gathering != null && gathering == 1){
+			queryWrapper.gt("balance_amount",BigDecimal.ZERO);
+		}
+		queryWrapper.orderByDesc("create_time");
+		List<Order> records = orderService.list(queryWrapper);
+		List<PurchaseOrderExcel> list = new ArrayList<>();
+		if(CollectionUtils.isNotEmpty(records))
+		{
+			records.forEach(e->{
+				if(e.getBelongToCorpId()!=null)
+				{
+					R<CorpsDesc> corpMessage3 = corpsDescClient.getCorpMessage(e.getBelongToCorpId());
+					if(corpMessage3.getData()!=null)
+					{
+						e.setBelongToCorpName(corpMessage3.getData().getCname());
+					}
+				}
+
+				//制单人名字
+				if(e.getCreateUser()!=null)
+				{
+					R<User> userR = userClient.userInfoById(e.getCreateUser());
+					if(userR.isSuccess())
+					{
+						e.setCreateUserName(userR.getData().getRealName());
+					}
+				}
+
+				//修改制单人名字
+				if(e.getUpdateUser()!=null)
+				{
+					R<User> userR = userClient.userInfoById(e.getUpdateUser());
+					if(userR.isSuccess())
+					{
+						e.setUpdateUserName(userR.getData().getRealName());
+					}
+				}
+
+				//获取供应商中文名
+				if (e.getCorpId() != null){
+					R<CorpsDesc> corpMessage1 = corpsDescClient.getCorpMessage(e.getCorpId());
+					if(corpMessage1.getData()!=null)
+					{
+						e.setStrCorpName(corpMessage1.getData().getCname());
+					}
+
+				}
+				//获取采购商中文名
+				if (e.getPurchaserId() != null){
+					R<CorpsDesc> corpMessage2 = corpsDescClient.getCorpMessage(e.getPurchaserId());
+					if(corpMessage2.getData()!=null)
+					{
+						e.setStrPurchaserName(corpMessage2.getData().getCname());
+					}
+				}
+
+				List<OrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<OrderItems>().eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getPid, e.getId()));
+				if(CollectionUtils.isNotEmpty(orderItemsList))
+				{
+					//子项总件数
+					BigDecimal orderQuantity = orderItemsList.stream().map(OrderItems::getOrderQuantity)
+						.filter(Objects::nonNull)
+						.reduce(BigDecimal.ZERO, BigDecimal::add);
+					e.setOrderQuantity(orderQuantity);
+
+					//子项总收货数
+					BigDecimal actualQuantity = orderItemsList.stream().map(OrderItems::getActualQuantity)
+						.filter(Objects::nonNull)
+						.reduce(BigDecimal.ZERO, BigDecimal::add);
+					e.setActualQuantity(actualQuantity);
+
+					//已收重量
+					BigDecimal actualWeight = orderItemsList.stream().map(OrderItems::getActualWeight)
+						.filter(Objects::nonNull)
+						.reduce(BigDecimal.ZERO, BigDecimal::add);
+					e.setActualWeight(actualWeight);
+
+					orderItemsList.forEach(item -> {
+						//商品信息
+						R<GoodsDescVO> goodsDesc = goodsDescClient.selectGoodsMessage(item.getItemId());
+						if(goodsDesc.isSuccess() && ObjectUtil.isNotEmpty(goodsDesc.getData()))
+						{
+							item.setGoodsName(goodsDesc.getData().getCname());
+						}
+					});
+				}
+
+				e.setItemsList(orderItemsList);
+				PurchaseOrderExcel purchaseOrderExcel = new PurchaseOrderExcel();
+				purchaseOrderExcel.setOrderNo(e.getOrderNo());//采购单号
+				purchaseOrderExcel.setStrCorpName(e.getStrCorpName());//供应商
+				purchaseOrderExcel.setOrderQuantity(e.getOrderQuantity());//订单数量
+				purchaseOrderExcel.setActualQuantity(e.getActualQuantity());//收货数量
+				purchaseOrderExcel.setOrderAmount(e.getOrderAmount());//采购金额
+				purchaseOrderExcel.setPackageRemarks(e.getPackageRemarks());//包装要求
+				purchaseOrderExcel.setBanksAccountName(e.getBanksAccountName());//公司户头
+				purchaseOrderExcel.setMorderNo(e.getMorderNo());//来源单号
+				purchaseOrderExcel.setCreateUserName(e.getCreateUserName());//制单人
+				purchaseOrderExcel.setDebitAmount(e.getDebitAmount());//应付金额
+				purchaseOrderExcel.setSettlmentAmount(e.getSettlmentAmount());//已付金额
+
+				list.add(purchaseOrderExcel);
+			});
+		}
+
+		ExcelUtil.export(response, "采购订单", "采购订单", list, PurchaseOrderExcel.class);
+	}
+
 /*	*//**
 	 * 自定义分页 销售或采购订单表
 	 *//*