Browse Source

2023年3月15日19:28:17

纪新园 2 years ago
parent
commit
6e9e0258c8
26 changed files with 680 additions and 263 deletions
  1. 6 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/CorpsAddr.java
  2. 12 0
      blade-service-api/blade-deliver-goods-api/src/main/java/org/springblade/deliver/goods/entity/Delivery.java
  3. 65 0
      blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/vo/AppStockPartsExcel.java
  4. 9 2
      blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/feign/IFinanceClient.java
  5. 12 0
      blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/vojo/Acc.java
  6. 11 0
      blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/vojo/Settlement.java
  7. 30 1
      blade-service/blade-client/src/main/java/org/springblade/client/corps/controller/CorpsAddrController.java
  8. 10 0
      blade-service/blade-client/src/main/java/org/springblade/client/corps/controller/CorpsDescPartsController.java
  9. 2 1
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/ICorpsAddrService.java
  10. 3 0
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/ICorpsDescService.java
  11. 11 9
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsAddrServiceImpl.java
  12. 43 0
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsDescServiceImpl.java
  13. 11 0
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java
  14. 25 50
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/TongLianPaymentController.java
  15. 3 0
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java
  16. 31 5
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/export/ExportOrderController.java
  17. 31 94
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java
  18. 153 50
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  19. 1 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/wing/accessories/WebpageController.java
  20. 20 9
      blade-service/blade-stock/src/main/java/org/springblade/stock/controller/StockGoodsController.java
  21. 2 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.java
  22. 148 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.xml
  23. 2 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/service/IStockGoodsService.java
  24. 5 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java
  25. 6 18
      blade-service/trade-finance/src/main/java/org/springblade/finance/controller/SettlementController.java
  26. 28 24
      blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

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

@@ -175,5 +175,11 @@ public class CorpsAddr implements Serializable {
 	@ApiModelProperty(value = "别名")
 	private String alias;
 
+	/**
+	 * 默认地址
+	 */
+	@ApiModelProperty(value = "默认地址")
+	private String defaultAddres;
+
 
 }

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

@@ -665,4 +665,16 @@ public class Delivery implements Serializable {
 	@ApiModelProperty(value = "本次使用返利")
 	private BigDecimal thisUsedProfit;
 
+	/**
+	 * 订舱状态(福达)
+	 */
+	@ApiModelProperty(value = "订舱状态")
+	private String bookingSpaceStatus;
+
+	/**
+	 * 订舱日期(福达)
+	 */
+	@ApiModelProperty(value = "订舱日期")
+	private Date bookingSpaceDate;
+
 }

+ 65 - 0
blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/vo/AppStockPartsExcel.java

@@ -0,0 +1,65 @@
+package org.springblade.stock.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * App库存视图类
+ *
+ * @author s
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class AppStockPartsExcel {
+
+	/**
+	 * 商品名
+	 */
+	@ExcelProperty("产品名称")
+	private String goods;
+
+	/**
+	 * 产品分类
+	 */
+	@ExcelProperty("产品分类")
+	private String goodsType;
+
+	/**
+	 * 仓库
+	 */
+	@ExcelProperty("仓库")
+	private String storage;
+
+	/**
+	 * 仓库结余
+	 */
+	@ExcelProperty("仓库结余")
+	private String storageBalance;
+
+
+	/**
+	 * 库存预警值
+	 */
+	@ExcelProperty("库存预警值")
+	private BigDecimal lowerLimit;
+
+	/**
+	 * 采购价
+	 */
+	@ExcelProperty("采购价")
+	private BigDecimal purchasePrice;
+	/**
+	 * 库存均价
+	 */
+	@ExcelProperty("库存均价")
+	private BigDecimal stockPrice;
+
+}

+ 9 - 2
blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/feign/IFinanceClient.java

@@ -1,6 +1,5 @@
 package org.springblade.finance.feign;
 
-import io.swagger.annotations.ApiOperation;
 import org.springblade.core.tool.api.R;
 import org.springblade.finance.dto.ApplyDTO;
 import org.springblade.finance.dto.SettlementDTO;
@@ -60,6 +59,7 @@ public interface IFinanceClient {
 
 	/**
 	 * 销售生成账单
+	 *
 	 * @param dto
 	 * @return
 	 */
@@ -68,6 +68,7 @@ public interface IFinanceClient {
 
 	/**
 	 * 销售生成账单(配件)
+	 *
 	 * @param dto
 	 * @return
 	 */
@@ -76,6 +77,7 @@ public interface IFinanceClient {
 
 	/**
 	 * 销售生成账单
+	 *
 	 * @param dto
 	 * @return
 	 */
@@ -84,6 +86,7 @@ public interface IFinanceClient {
 
 	/**
 	 * 海运进出口生成账单
+	 *
 	 * @param dto
 	 * @return
 	 */
@@ -92,6 +95,7 @@ public interface IFinanceClient {
 
 	/**
 	 * 销售生成账单
+	 *
 	 * @param dto
 	 * @return
 	 */
@@ -113,6 +117,7 @@ public interface IFinanceClient {
 
 	/**
 	 * 保存收付款信息
+	 *
 	 * @param dto
 	 * @return
 	 */
@@ -132,7 +137,7 @@ public interface IFinanceClient {
 	R deleteBySrcFeesId(@RequestParam("feesId") Long feesId);
 
 	@GetMapping("/settlement/selectListBySrcId")
-	List<Settlement> selectListBySrcId(@RequestParam(value = "srcId") Long srcId);
+	List<Settlement> selectListBySrcId(@RequestParam(value = "srcId") Long srcId, @RequestParam(value = "paymentType", required = false) String paymentType);
 
 	/**
 	 * 获得收付款信息
@@ -167,4 +172,6 @@ public interface IFinanceClient {
 	@GetMapping("/acc/selectByParentId")
 	Acc selectByParentId(@RequestParam("parentId") Long parentId);
 
+	@PostMapping("/settlement/update")
+	void updateSettlement(@Valid @RequestBody Settlement settlement);
 }

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

@@ -591,4 +591,16 @@ public class Acc implements Serializable {
 	 */
 	@TableField(exist = false)
 	private Long orderId;
+
+	/**
+	 * 支付状态
+	 */
+	@TableField(exist = false)
+	private String paymentStatus;
+
+	/**
+	 * 支付类型
+	 */
+	@TableField(exist = false)
+	private String paymentType;
 }

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

@@ -322,4 +322,15 @@ public class Settlement implements Serializable {
 	@ApiModelProperty(value = "收费 、付费")
 	private String type;
 
+	/**
+	 * 支付状态
+	 */
+	@ApiModelProperty(value = "支付状态")
+	private String paymentStatus;
+	/**
+	 * 支付类型
+	 */
+	@ApiModelProperty(value = "支付类型")
+	private String paymentType;
+
 }

+ 30 - 1
blade-service/blade-client/src/main/java/org/springblade/client/corps/controller/CorpsAddrController.java

@@ -16,6 +16,8 @@
  */
 package org.springblade.client.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;
@@ -25,8 +27,12 @@ import javax.validation.Valid;
 
 import org.bouncycastle.crypto.agreement.srp.SRP6Util;
 import org.springblade.client.corps.service.ICorpsAddrService;
+import org.springblade.client.corps.service.impl.CorpsAttnServiceImpl;
+import org.springblade.client.entity.CorpsAttn;
+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;
@@ -36,6 +42,8 @@ import org.springblade.client.entity.CorpsAddr;
 import org.springblade.client.vo.CorpsAddrVO;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.List;
+
 /**
  * 客户收发货地址 控制器
  *
@@ -50,6 +58,8 @@ public class CorpsAddrController extends BladeController {
 
 	private final ICorpsAddrService corpsAddrService;
 
+	private CorpsAttnServiceImpl corpsAttnService;//客户联系人
+
 	/**
 	 * 详情
 	 */
@@ -117,7 +127,6 @@ public class CorpsAddrController extends BladeController {
 		return R.status(corpsAddrService.saveOrUpdate(corpsAddr));
 	}
 
-
 	/**
 	 * 删除 客户收发货地址
 	 */
@@ -128,5 +137,25 @@ public class CorpsAddrController extends BladeController {
 		return R.status(corpsAddrService.removeByIds(Func.toLongList(ids)));
 	}
 
+	/**
+	 * 分页 客户收发货地址
+	 */
+	@GetMapping("/listAll")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入corpsAddr")
+	public R<List<CorpsAddr>> listAll(CorpsAddr corpsAddr) {
+		CorpsAttn corpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<CorpsAttn>().eq(CorpsAttn::getIsDeleted, 0)
+			.eq(CorpsAttn::getTenantId, AuthUtil.getTenantId())
+			.eq(CorpsAttn::getUserId, AuthUtil.getUserId()));
+		if (ObjectUtils.isNull(corpsAttn)) {
+			throw new RuntimeException("未找到账户信息,操作失败");
+		}
+		corpsAddr.setPid(corpsAttn.getPid());
+		corpsAddr.setTenantId(SecureUtil.getTenantId());
+		corpsAddr.setIsDeleted(0);
+		List<CorpsAddr> corpsAddrList = corpsAddrService.list(Condition.getQueryWrapper(corpsAddr));
+		return R.data(corpsAddrList);
+	}
+
 
 }

+ 10 - 0
blade-service/blade-client/src/main/java/org/springblade/client/corps/controller/CorpsDescPartsController.java

@@ -408,4 +408,14 @@ public class CorpsDescPartsController extends BladeController {
 		ExcelUtil.export(response, "导出客户信息", "导出数据表", list, CorpsYCPExcel.class);
 	}
 
+	/**
+	 * 保存 客户收发货地址
+	 */
+	@PostMapping("/preserve")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入corpsAddr")
+	public R preserve(@Valid @RequestBody CorpsAddr corpsAddr) {
+		return corpsDescService.preserve(corpsAddr);
+	}
+
 }

+ 2 - 1
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/ICorpsAddrService.java

@@ -17,9 +17,11 @@
 package org.springblade.client.corps.service;
 
 import org.springblade.client.entity.CorpsAddr;
+import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.vo.CorpsAddrVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.tool.api.R;
 
 import java.util.List;
 
@@ -47,5 +49,4 @@ public interface ICorpsAddrService extends IService<CorpsAddr> {
 	 * @return
 	 */
 	List<CorpsAddr> getCorpsAddr(Long pid,String tenantId);
-
 }

+ 3 - 0
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/ICorpsDescService.java

@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.client.corps.excel.*;
 import org.springblade.client.dto.CorpsDescDto;
+import org.springblade.client.entity.CorpsAddr;
 import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.vo.CorpsDescVO;
 import org.springblade.core.tool.api.R;
@@ -219,4 +220,6 @@ public interface ICorpsDescService extends IService<CorpsDesc> {
 	R getDetails();
 
 	R importCorpsNew(List<CorpsYCPExcel> excelList);
+
+	R preserve(CorpsAddr corpsAddr);
 }

+ 11 - 9
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsAddrServiceImpl.java

@@ -16,20 +16,22 @@
  */
 package org.springblade.client.corps.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.AllArgsConstructor;
 import org.springblade.client.corps.mapper.CorpsAddrMapper;
 import org.springblade.client.corps.service.ICorpsAddrService;
 import org.springblade.client.entity.CorpsAddr;
 import org.springblade.client.entity.CorpsAttn;
 import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.vo.CorpsAddrVO;
+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.StringUtil;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import java.util.Date;
 import java.util.List;
@@ -50,25 +52,25 @@ public class CorpsAddrServiceImpl extends ServiceImpl<CorpsAddrMapper, CorpsAddr
 
 	@Override
 	public List<CorpsAddr> getCorpsAddr(Long pid, String tenantId) {
-		return baseMapper.getCorpsAddr(pid,tenantId);
+		return baseMapper.getCorpsAddr(pid, tenantId);
 	}
 
-	public R saveOrUpdateAddr(CorpsDesc corpsDesc, Long userId, Long pId, String tenantId, Date date){
-		if (CollectionUtils.isNotEmpty(corpsDesc.getCorpsAddrList())){
+	public R saveOrUpdateAddr(CorpsDesc corpsDesc, Long userId, Long pId, String tenantId, Date date) {
+		if (CollectionUtils.isNotEmpty(corpsDesc.getCorpsAddrList())) {
 			for (CorpsAddr corpsAddr : corpsDesc.getCorpsAddrList()) {
 				corpsAddr.setPid(pId);
 				corpsAddr.setTenantId(tenantId);
 //				if (StringUtil.isBlank(corpsAddr.getAddr())){
 //					throw new RuntimeException("地址不能为空");
 //				}
-				if (ObjectUtils.isNull(corpsAddr.getId())){
+				if (ObjectUtils.isNull(corpsAddr.getId())) {
 					CorpsAddr corpsAttn = baseMapper.selectCorpsAddrCode(corpsAddr.getAddr(), corpsAddr.getPid(), SecureUtil.getTenantId());
 					if (corpsAttn != null && corpsAttn.getId() == null) {
-						throw new RuntimeException("地址不能重复:"+corpsAddr.getAddr()+"已存在");
+						throw new RuntimeException("地址不能重复:" + corpsAddr.getAddr() + "已存在");
 					} else if (corpsAttn != null && !corpsAttn.getId().equals(corpsAddr.getId())) {
-						throw new RuntimeException("地址不能重复:"+corpsAddr.getAddr()+"已存在");
+						throw new RuntimeException("地址不能重复:" + corpsAddr.getAddr() + "已存在");
 					}
-					if (ObjectUtils.isNull(corpsAddr.getAbbreviation())){
+					if (ObjectUtils.isNull(corpsAddr.getAbbreviation())) {
 						corpsAddr.setAttn(corpsDesc.getAttn());
 						corpsAddr.setTel(corpsDesc.getTel());
 						corpsAddr.setAbbreviation("送货地址");

+ 43 - 0
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsDescServiceImpl.java

@@ -805,6 +805,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 			CorpsAddr corpsAddr = corpsAddrService.getOne(new LambdaQueryWrapper<CorpsAddr>().eq(CorpsAddr::getIsDeleted, 0)
 				.eq(CorpsAddr::getTenantId, AuthUtil.getTenantId())
 				.eq(CorpsAddr::getPid, corpsDesc1.getId())
+				.eq(CorpsAddr::getDetailedAddress, "1")
 				.eq(CorpsAddr::getTel, corpsDesc.getTel()));
 			if (ObjectUtils.isNotNull(corpsAddr)) {
 				corpsAddr.setAddr(corpsDesc.getAddr());
@@ -824,6 +825,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 				corpsAddr1.setAlias("默认地址-" + corpsDesc.getAttn());
 				corpsAddr1.setTenantId(AuthUtil.getTenantId());
 				corpsAddr1.setPid(corpsDesc1.getId());
+				corpsAddr1.setDetailedAddress("1");
 				corpsAddr1.setCreateTime(new Date());
 				corpsAddr1.setTenantId(AuthUtil.getTenantId());
 				corpsAddr1.setCreateUser(AuthUtil.getUserId());
@@ -864,6 +866,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 				corpsAddr.setAbbreviation("送货地址");
 				corpsAddr.setAlias("默认地址-" + corpsDesc.getAttn());
 				corpsAddr.setTenantId(AuthUtil.getTenantId());
+				corpsAddr.setDetailedAddress("1");
 				corpsAddr.setPid(corpsDesc.getId());
 				corpsAddr.setCreateTime(new Date());
 				corpsAddr.setTenantId(AuthUtil.getTenantId());
@@ -998,6 +1001,46 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 	}
 
 	@Override
+	public R preserve(CorpsAddr corpsAddr) {
+		CorpsAttn corpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<CorpsAttn>().eq(CorpsAttn::getIsDeleted, 0)
+			.eq(CorpsAttn::getTenantId, AuthUtil.getTenantId())
+			.eq(CorpsAttn::getUserId, AuthUtil.getUserId()));
+		if (ObjectUtils.isNotNull(corpsAttn)) {
+			CorpsDesc details = baseMapper.getCorpId(corpsAttn.getPid());
+			if (ObjectUtils.isNull(details)) {
+				throw new RuntimeException("未找到账户信息,保存失败");
+			}
+			corpsAddr.setTenantId(AuthUtil.getTenantId());
+			if ("1".equals(corpsAddr.getDefaultAddres())) {
+				CorpsAddr corpsAddr1 = corpsAddrMapper.selectOne(new LambdaQueryWrapper<CorpsAddr>().eq(CorpsAddr::getIsDeleted, 0)
+					.eq(CorpsAddr::getTenantId, AuthUtil.getTenantId())
+					.eq(CorpsAddr::getDefaultAddres, "1")
+					.eq(CorpsAddr::getPid, details.getId()));
+				if (ObjectUtils.isNotNull(corpsAddr1)) {
+					corpsAddr1.setDefaultAddres("0");
+					corpsAddrMapper.updateById(corpsAddr1);
+				}
+			}
+			if (ObjectUtils.isNull(corpsAddr.getId())) {
+				CorpsAddr corpsAttnDetails = corpsAddrMapper.selectCorpsAddrCode(corpsAddr.getAddr(), details.getId(), SecureUtil.getTenantId());
+				if (corpsAttnDetails != null) {
+					throw new RuntimeException("地址不能重复:" + corpsAddr.getAddr() + "已存在");
+				}
+				corpsAddr.setPid(details.getId());
+				corpsAddr.setAbbreviation("送货地址");
+				corpsAddr.setCreateUser(AuthUtil.getUserId());
+				corpsAddr.setCreateTime(new Date());
+				corpsAddrMapper.insert(corpsAddr);
+			} else {
+				corpsAddr.setUpdateUser(AuthUtil.getUserId());
+				corpsAddr.setUpdateTime(new Date());
+				corpsAddrMapper.updateById(corpsAddr);
+			}
+		}
+		return R.data(corpsAddr);
+	}
+
+	@Override
 	public IPage<CorpsDescDto> selectPartsCorpsDescPage(IPage<CorpsDescDto> page, CorpsDescDto corpsDescDto) {
 		//获取客户子类别
 		if (StringUtils.isNotBlank(corpsDescDto.getCorpsTypeId())) {

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

@@ -1163,6 +1163,12 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 			detail.setShippingDate(null);
 			detail.setCustomsDate(null);
 			detail.setDeliveryStatus("订单完成");
+		} else if (4 == delivery.getDocumentaryStatusType()) {
+			detail.setBookingSpaceStatus("已订舱");
+			detail.setBookingSpaceDate(delivery.getBookingSpaceDate());
+			detail.setShippingDate(null);
+			detail.setCustomsDate(null);
+			detail.setDeliveryStatus("订单完成");
 		}
 		Order selectOrder = orderDescClient.getById(detail.getSrcId());
 		if (ObjectUtils.isNotNull(selectOrder)) {
@@ -1205,6 +1211,11 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 				selectOrder.setDocumentaryStatus("订单完成");
 				selectOrder.setOrderStatus("订单完成");
 				selectOrder.setDocumentaryDate(delivery.getDocumentaryDate());
+			}else if (4 == delivery.getDocumentaryStatusType()) {
+				sendMessage.setMessageBody("您的销售订单" + selectOrder.getSysNo() + "已订舱,请查看");
+				selectOrder.setDocumentaryStatus("已订舱");
+				selectOrder.setOrderStatus("已订舱");
+				selectOrder.setDocumentaryDate(delivery.getBookingSpaceDate());
 			}
 			selectOrder.setBillLadingNo(detail.getBillLadingNo());
 			orderDescClient.updateOrder(selectOrder);

+ 25 - 50
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/TongLianPaymentController.java

@@ -31,7 +31,10 @@ import org.springblade.purchase.sales.feign.IOrderItemsClient;
 import org.springblade.stock.entity.StockGoods;
 import org.springblade.stock.feign.IStockGoodsClient;
 import org.springblade.stock.vo.StockGoodsVO;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
 import javax.servlet.http.HttpServletRequest;
@@ -144,10 +147,10 @@ public class TongLianPaymentController extends BladeController {
 						selectOrder.setConfirmStatus(2);
 						selectOrder.setActualPaymentStatus(2);
 						selectOrder.setPaymentAmountTl(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
-						if (ObjectUtils.isNotNull(selectOrder.getSettlmentAmount())){
+						if (ObjectUtils.isNotNull(selectOrder.getSettlmentAmount())) {
 							selectOrder.setSettlmentAmount(selectOrder.getSettlmentAmount().add(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP)));
 							selectOrder.setBalanceAmount(selectOrder.getDebitAmount().subtract(selectOrder.getSettlmentAmount()));
-						}else{
+						} else {
 							selectOrder.setSettlmentAmount(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
 							selectOrder.setBalanceAmount(selectOrder.getDebitAmount().subtract(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP)));
 						}
@@ -164,15 +167,13 @@ public class TongLianPaymentController extends BladeController {
 							}
 							settlement.setSettlementDate(new Date());
 							settlement.setAccount("微信支付");
-							settlement.setAmount(selectOrder.getRmbAmount());
+							settlement.setAmount(selectOrder.getPaymentAmountTl());
 							settlement.setOverPayment(new BigDecimal("0.00"));
 							settlementList.add(settlement);
-							selectOrder.setCurrentAmount(selectOrder.getRmbAmount());
+							selectOrder.setCurrentAmount(selectOrder.getPaymentAmountTl());
 							if ("2".equals(selectOrder.getOrderSource())) {
 								System.out.println("第三步");
-								R<List<OrderItems>> res = orderItemsClient.selectListYCP(selectOrder.getId(),order.getTenantId());
-								BigDecimal costAmount = new BigDecimal("0.00");
-								BigDecimal grossProfit = new BigDecimal("0.00");
+								R<List<OrderItems>> res = orderItemsClient.selectListYCP(selectOrder.getId(), order.getTenantId());
 								if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
 									System.out.println("第三步明细" + res.getData());
 									for (OrderItems orderItems : res.getData()) {
@@ -186,9 +187,8 @@ public class TongLianPaymentController extends BladeController {
 										BigDecimal surplusRouteQuantity = new BigDecimal("0.00");
 										BigDecimal balanceQuantity = new BigDecimal("0.00");
 										BigDecimal balanceAmount = new BigDecimal("0.00");
-										orderItems.setPurchaseCost(orderItems.getPurchasePrice());
 										//获取本商品库存
-										R<StockGoodsVO> r = stockGoodsClient.selectStockPartsYCP(null, orderItems.getStorageId(), orderItems.getItemId(), null, null, null, null, null, null,order.getTenantId());
+										R<StockGoodsVO> r = stockGoodsClient.selectStockPartsYCP(null, orderItems.getStorageId(), orderItems.getItemId(), null, null, null, null, null, null, order.getTenantId());
 										if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
 											System.out.println("第三步库存" + res.getData());
 											if ("XS".equals(selectOrder.getBillType())) {
@@ -197,19 +197,11 @@ public class TongLianPaymentController extends BladeController {
 												surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().subtract(orderItems.getStorageInQuantity()));
 												balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
 												System.out.println("第三步新库存" + surplusRouteQuantity);
-												if (new BigDecimal("0.00").equals(r.getData().getSurplusRouteQuantity())) {
-													costAmount = costAmount.add(orderItems.getPurchasePrice().multiply(orderItems.getStorageInQuantity()));
-												} else {
-													costAmount = costAmount.add(r.getData().getStockPrice().multiply(orderItems.getStorageInQuantity()));
-												}
-												balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32));
+												balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32));
 												stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 												System.out.println("第三步新库存价" + stockPrice);
 												r.getData().setOutQuantity(r.getData().getOutQuantity().add(orderItems.getStorageInQuantity()));
-												r.getData().setOutAmount(r.getData().getOutAmount().add(costAmount));
-
-												BigDecimal grossProfits = orderItems.getPrice().subtract(orderItems.getPurchasePrice());
-												grossProfit = grossProfit.add(orderItems.getStorageInQuantity().multiply(grossProfits));
+												r.getData().setOutAmount(r.getData().getOutAmount().add(orderItems.getPrice().multiply(orderItems.getStorageInQuantity())));
 											} else {
 												surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().add(orderItems.getStorageInQuantity()));
 												balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
@@ -218,9 +210,6 @@ public class TongLianPaymentController extends BladeController {
 
 												r.getData().setInQuantity(r.getData().getInQuantity().add(orderItems.getStorageInQuantity()));
 												r.getData().setInAmount(r.getData().getInAmount().add(orderItems.getAmount()));
-
-												costAmount = costAmount.add(orderItems.getPurchasePrice().multiply(orderItems.getStorageInQuantity()));
-												grossProfit = grossProfit.add(new BigDecimal("0.00"));
 											}
 											r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
 											r.getData().setBalanceQuantity(balanceQuantity);
@@ -254,8 +243,6 @@ public class TongLianPaymentController extends BladeController {
 											}
 										}
 									}
-									selectOrder.setCostAmount(costAmount);
-									selectOrder.setGrossProfit(grossProfit);
 								} else {
 									wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,库存加减失败!原因:未查到单据明细信息");
 									wechatMark.setStatus(2);
@@ -264,14 +251,14 @@ public class TongLianPaymentController extends BladeController {
 							//账单支付处理
 							//获取所属公司中文名
 							if (selectOrder.getBelongToCorpId() != null) {
-								R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessageYCP(selectOrder.getBelongToCorpId(),order.getTenantId());
+								R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessageYCP(selectOrder.getBelongToCorpId(), order.getTenantId());
 								if (corpMessage.isSuccess() && corpMessage.getData() != null) {
 									selectOrder.setBelongToCorpName(corpMessage.getData().getCname());
 								}
 							}
 							//获取客户中文名
 							if (selectOrder.getCorpId() != null) {
-								R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessageYCP(selectOrder.getCorpId(),order.getTenantId());
+								R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessageYCP(selectOrder.getCorpId(), order.getTenantId());
 								if (corpMessage.isSuccess() && corpMessage.getData() != null) {
 									selectOrder.setCorpsName(corpMessage.getData().getCname());
 								}
@@ -284,6 +271,8 @@ public class TongLianPaymentController extends BladeController {
 							applyDTO.setTradeType(selectOrder.getTradeType());
 							applyDTO.setBelongCompany(selectOrder.getBelongToCorpName());
 							applyDTO.setAccDate(selectOrder.getBusinesDate());
+							applyDTO.setPaymentStatus("已支付");
+							applyDTO.setPaymentType("1");
 							if ("CG".equals(selectOrder.getBillType())) {
 								applyDTO.setDc("C");
 								applyDTO.setBillType("付费");
@@ -312,48 +301,36 @@ public class TongLianPaymentController extends BladeController {
 							applyDTO.setUnit("条");
 							applyDTO.setRemarks(selectOrder.getOrderRemark());
 							//获取费用id
-							R<FeesDesc> fees = feesDescClient.getFeesByNameYCP("货款",order.getTenantId());
+							R<FeesDesc> fees = feesDescClient.getFeesByNameYCP("货款", order.getTenantId());
 							if (fees.isSuccess() && fees.getData() != null) {
 								applyDTO.setCostType(fees.getData().getId().toString());
 							}
+							applyDTO.setSettlementAmount(selectOrder.getSettlmentAmount().add(selectOrder.getPaymentAmountTl()));
 							applyDTO.setQuantity(new BigDecimal(1));
-							applyDTO.setPrice(selectOrder.getDebitAmount());
-							applyDTO.setAmount(selectOrder.getDebitAmount());
 							applyDTO.setSrcDate(selectOrder.getBusinesDate());
 							applyDTO.setSrcBillNo(selectOrder.getOrderNo());
 							applyDTO.setAccSysNo(selectOrder.getSysNo());
 							applyDTO.setSrcRefno(selectOrder.getSysNo());
 							applyDTO.setRetrieval(selectOrder.getAdvanceCollectionDate());
 							applyDTO.setCorpName(selectOrder.getCorpsName());
-
 							applyDTO.setAmount(amount);
 							applyDTO.setPrice(price);
 							applyDTO.setQuantity(quantity);
-							applyDTO.setReceivedAmount(selectOrder.getCurrentAmount());
 							applyDTO.setTenantId(order.getTenantId());
-							if (ObjectUtils.isNotNull(selectOrder.getCurrentAmount())) {
-								applyDTO.setSettlementAmount(selectOrder.getSettlmentAmount().add(selectOrder.getCurrentAmount()));
-							}
-							if (ObjectUtils.isNotNull(selectOrder.getSettlementList()) && selectOrder.getSettlementList().size() > 0) {
-								applyDTO.setId(selectOrder.getSrcAccId());
-								BigDecimal receivedAmount = selectOrder.getCurrentAmount();
-								receivedAmount = receivedAmount.add(selectOrder.getSettlmentAmount());
-								amount = amount.subtract(receivedAmount);
-								selectOrder.setSettlmentAmount(receivedAmount);
-								selectOrder.setBalanceAmount(amount);
-							} else {
-								wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,修改单据已收账款失败");
-								wechatMark.setStatus(2);
-							}
+							BigDecimal receivedAmount = selectOrder.getPaymentAmountTl();
+							receivedAmount = receivedAmount.add(selectOrder.getSettlmentAmount());
+							amount = amount.subtract(receivedAmount);
+							selectOrder.setSettlmentAmount(receivedAmount);
+							selectOrder.setBalanceAmount(amount);
 							orderDescClient.updateOrderYCP(selectOrder);
-
 							//生成账单
 							R paymentApply = financeClient.paymentApplyParts(applyDTO);
 							if (!paymentApply.isSuccess()) {
 								wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,账单结算失败!原因:" + paymentApply.getMsg());
 								wechatMark.setStatus(2);
 							} else {
-								System.out.println("第四步");
+								wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付成功");
+								wechatMark.setStatus(1);
 							}
 						} else {
 							wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到收款信息,账单结算失败!");
@@ -365,8 +342,6 @@ public class TongLianPaymentController extends BladeController {
 						wechatMark.setStatus(2);
 						System.out.println("第一部步失败");
 					}
-					wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付成功");
-					wechatMark.setStatus(1);
 					wechatMarkService.save(wechatMark);
 					response.getWriter().write(AnalysisMapUtils.setXML("SUCCESS", "OK"));
 				} else {

+ 3 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java

@@ -88,6 +88,9 @@ public class PaymentServiceImpl implements IPaymentService {
 					for (OrderItems goodsVo : res.getData()) {
 						GoodsDesc goodsDesc = goodsDescClient.getGoodsDescDetail(goodsVo.getItemId());
 						if (ObjectUtils.isNotNull(goodsDesc)) {
+							if(!"1".equals(goodsDesc.getUpperFrame())){
+								throw new RuntimeException(goodsDesc.getCname() + "-该产品以下架,付款失败");
+							}
 							body = body + goodsDesc.getCname() + "、";
 						}
 					}

+ 31 - 5
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/export/ExportOrderController.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -36,6 +37,7 @@ import org.springblade.finance.vojo.Acc;
 import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.entity.OrderFees;
 import org.springblade.purchase.sales.entity.OrderItems;
+import org.springblade.purchase.sales.entity.OrderParts;
 import org.springblade.purchase.sales.excel.*;
 import org.springblade.purchase.sales.service.*;
 import org.springblade.purchase.sales.vo.*;
@@ -1303,7 +1305,7 @@ public class ExportOrderController extends BladeController {
 	@GetMapping("/listXS")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入order")
-	public R<IPage<OrderItems>> listXS(OrderItems orderItems, Query query) {
+	public R<List<OrderItems>> listXS(OrderItems orderItems, Query query) {
 		LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(OrderItems::getTenantId, SecureUtil.getTenantId());//租户id
 		lambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0);//订单是否有效
@@ -1322,8 +1324,9 @@ public class ExportOrderController extends BladeController {
 		lambdaQueryWrapper.eq(OrderItems::getFudaPurchaseStatus, "待采购");//销售单号
 		lambdaQueryWrapper.apply("order_quantity > purchase_quantity");//销售数量大于采购数量
 		lambdaQueryWrapper.orderByDesc(OrderItems::getId);
-		IPage<OrderItems> pages = orderItemsService.page(Condition.getPage(query), lambdaQueryWrapper);
-		for (OrderItems orderItems_ : pages.getRecords()) {
+		List<OrderItems> pages = orderItemsService.list(lambdaQueryWrapper);
+		List<OrderItems> orderItemsList = new ArrayList<>();
+		for (OrderItems orderItems_ : pages) {
 			if (ObjectUtils.isNotNull(orderItems_.getCorpId())) {
 				CorpsDesc corpsDesc = corpsDescClient.getCorpId(orderItems_.getCorpId());
 				if (ObjectUtils.isNotNull(corpsDesc)) {
@@ -1337,7 +1340,6 @@ public class ExportOrderController extends BladeController {
 					orderItems_.setCode(goodsDesc.getCode());
 				}
 			}
-
 			if (ObjectUtils.isNotNull(orderItems_.getPurchaseQuantity())) {
 				orderItems_.setActualQuantity(orderItems_.getOrderQuantity().subtract(orderItems_.getPurchaseQuantity()));
 			} else {
@@ -1350,8 +1352,32 @@ public class ExportOrderController extends BladeController {
 				orderItems_.setPrice(orderItems_.getPrice());
 				orderItems_.setAmount(orderItems_.getPrice().multiply(orderItems_.getActualQuantity()));
 			}
+			orderItemsList.add(orderItems_);
+			LambdaQueryWrapper<OrderParts> orderPartsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			orderPartsLambdaQueryWrapper.eq(OrderParts::getIsDeleted, 0)
+				.eq(OrderParts::getTenantId, AuthUtil.getTenantId())
+				.eq(OrderParts::getType, "4")
+				.eq(OrderParts::getPid, orderItems_.getId());
+			List<OrderParts> orderPartsList = orderPartsService.list(orderPartsLambdaQueryWrapper);
+			for (OrderParts orderParts : orderPartsList) {
+				OrderItems orderItems1 = new OrderItems();
+				orderItems1.setBillNo(orderItems_.getBillNo());
+				orderItems1.setBusinesDate(orderItems_.getBusinesDate());
+				orderItems1.setPlannedDeliveryDate(orderItems_.getPlannedDeliveryDate());
+				orderItems1.setCarry(orderItems_.getCarry());
+				orderItems1.setItemId(orderParts.getGoodId());
+				orderItems1.setCname(orderParts.getGoodName());
+				orderItems1.setPrice(orderParts.getPrice());
+				orderItems1.setActualQuantity(orderParts.getGoodNumber());
+				orderItems1.setOrderQuantity(orderParts.getGoodNumber());
+				orderItems1.setAmount(orderParts.getAmout());
+				orderItems1.setPriceCategory(orderParts.getGoodTypeName());
+				orderItems1.setEname(orderParts.getEname());
+				orderItems1.setPartsCost(orderParts.getPartsCost());
+				orderItemsList.add(orderItems1);
+			}
 		}
-		return R.data(pages);
+		return R.data(orderItemsList);
 	}
 
 	/**

+ 31 - 94
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java

@@ -9,16 +9,15 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.trade.purchase.order.enums.OrderTypeEnum;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.time.DateUtils;
-import org.springblade.client.entity.FeesDesc;
 import org.springblade.client.feign.IFeesDescClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.ObjectUtil;
-import org.springblade.finance.dto.ApplyDTO;
 import org.springblade.finance.feign.IFinanceClient;
 import org.springblade.finance.vojo.Acc;
+import org.springblade.finance.vojo.Settlement;
 import org.springblade.pay.tonglianPayment.dto.PaymentDTO;
 import org.springblade.pay.tonglianPayment.fegin.IPaymentClient;
 import org.springblade.purchase.sales.entity.Order;
@@ -287,7 +286,7 @@ public class OrderDescClient implements IOrderDescClient {
 			throw new SecurityException("未查到订单信息");
 		}
 		LambdaQueryWrapper<OrderItems> orderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		orderItemsLambdaQueryWrapper.eq(OrderItems::getTenantId, AuthUtil.getTenantId()).eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getPid, selectOrder.getId());
+		orderItemsLambdaQueryWrapper.eq(OrderItems::getTenantId, AuthUtil.getTenantId()).eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getPid, order.getId());
 		List<OrderItems> orderItemsList1 = iOrderItemsService.list(orderItemsLambdaQueryWrapper);
 		for (OrderItems orderItems : orderItemsList1) {
 			BigDecimal stockPrice = new BigDecimal("0.00");
@@ -330,101 +329,39 @@ public class OrderDescClient implements IOrderDescClient {
 		order.setSettlmentAmount(order.getSettlmentAmount().subtract(order.getPaymentAmountTl()));
 		iOrderService.updateById(selectOrder);
 
-		//获取账单信息
-		Acc acc = new Acc();
-		acc.setSrcParentId(order.getId());
-		if ("CG".equals(order.getBillType())) {
-			acc.setBillType("申请");
-		} else {
-			acc.setBillType("收费");
-		}
-		acc.setTradeType("YPJ");
-		acc.setSrcType(4);
-		R<List<Acc>> r = financeClient.getAccListByCondition(acc);
-		if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
-			for (Acc acc_ : r.getData()) {
-				//判断是否有结算 true 不允许撤销审核  false 删除账单信息并撤销审核
-				if (!acc_.getSettlementAmount().equals(new BigDecimal("0.00"))) {
-					BigDecimal amount = BigDecimal.ZERO;//对账金额   销售订单生成的金额  销售金额-本次使用返利金额+费用明细
-					BigDecimal quantity = BigDecimal.ZERO;//对账数量 数量为 就是轮胎条数的和
-					BigDecimal price = BigDecimal.ZERO;//对账单价
-					ApplyDTO applyDTO = new ApplyDTO();
-					applyDTO.setCompanyid(selectOrder.getBelongToCorpId());
-					applyDTO.setTradeType(selectOrder.getTradeType());
-					applyDTO.setBelongCompany(selectOrder.getBelongToCorpName());
-					applyDTO.setUrl(selectOrder.getUrl());
-					applyDTO.setPageStatus(selectOrder.getPageStatus());
-					applyDTO.setPageLabel(selectOrder.getPageLabel());
-					applyDTO.setCheckType(selectOrder.getCheckType());
-					applyDTO.setAccDate(selectOrder.getBusinesDate());
-					if ("XSTH".equals(selectOrder.getBillType())) {
-						applyDTO.setDc("C");
-						applyDTO.setBillType("付费");
-					} else if ("CGTH".equals(selectOrder.getBillType())) {
-						applyDTO.setDc("D");
-						applyDTO.setBillType("收费");
-					}
-					applyDTO.setSettlementList(new ArrayList<>());
-					amount = amount.add(acc_.getSettlementAmount());
-					quantity = quantity.add(new BigDecimal(1));
-					price = price.add(amount);
-
-					applyDTO.setSrcParentId(selectOrder.getId());
-					applyDTO.setSrcSysno(selectOrder.getSysNo());
-					applyDTO.setItemType("YPJ");
-					applyDTO.setCorpId(selectOrder.getCorpId());
-					applyDTO.setSrcId(selectOrder.getId());
-					applyDTO.setSrcFeesId(selectOrder.getId());
-					applyDTO.setCurrency("CNY");
-					applyDTO.setExchangeRate(selectOrder.getExchangeRate());
-					applyDTO.setTaxRate(BigDecimal.ZERO);
-					applyDTO.setSrcType(4);
-					applyDTO.setTradeType(selectOrder.getTradeType());
-					applyDTO.setChargeMember(selectOrder.getChargeMember());
-					applyDTO.setUnit("条");
-					applyDTO.setRemarks(selectOrder.getOrderRemark());
-					//获取费用id
-					R<FeesDesc> fees = feesDescClient.getFeesByName("货款");
-					if (fees.isSuccess() && fees.getData() != null) {
-						applyDTO.setCostType(fees.getData().getId().toString());
-					}
-					applyDTO.setQuantity(new BigDecimal(1));
-					applyDTO.setPrice(selectOrder.getDebitAmount());
-					applyDTO.setAmount(selectOrder.getDebitAmount());
-					applyDTO.setSrcDate(selectOrder.getBusinesDate());
-					applyDTO.setSrcBillNo(selectOrder.getOrderNo());
-					applyDTO.setAccSysNo(selectOrder.getSysNo());
-					applyDTO.setSrcRefno(selectOrder.getSysNo());
-					applyDTO.setRetrieval(selectOrder.getAdvanceCollectionDate());
-					applyDTO.setCorpName(selectOrder.getCorpsName());
-
-					applyDTO.setAmount(amount);
-					applyDTO.setPrice(price);
-					applyDTO.setQuantity(quantity);
-					applyDTO.setReceivedAmount(selectOrder.getCurrentAmount());
-					applyDTO.setSettlementAmount(acc_.getSettlementAmount());
-					//生成账单
-					R paymentApply = financeClient.paymentApplyParts(applyDTO);
-					if (!paymentApply.isSuccess()) {
-						throw new RuntimeException(paymentApply.getMsg());
+		//获取订单结算信息
+		List<Settlement> settlementList = financeClient.selectListBySrcId(order.getId(), "1");
+		if (ObjectUtils.isNotNull(settlementList) && settlementList.size() == 1) {
+			//获取账单信息
+			Acc acc = new Acc();
+			acc.setSrcParentId(order.getId());
+			if ("CG".equals(order.getBillType())) {
+				acc.setBillType("申请");
+			} else {
+				acc.setBillType("收费");
+			}
+			acc.setTradeType("YPJ");
+			acc.setSrcType(4);
+			acc.setId(settlementList.get(0).getAccId());
+			R<List<Acc>> r = financeClient.getAccListByCondition(acc);
+			if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+				for (Acc acc_ : r.getData()) {
+					if (!new BigDecimal("0.00").equals(acc_.getSettlementAmount())){
+						acc_.setSettlementAmount(acc_.getSettlementAmount().subtract(settlementList.get(0).getAmount()));
+						financeClient.update(acc_);
 					}
-				} else {
-					financeClient.remove(acc_.getId() + "");
 				}
 			}
-
-		}
-		if ("234557".equals(AuthUtil.getTenantId())) {
-			return R.data(new HashMap<>());
-		} else {
-			//微信退款
-			PaymentDTO paymentDTO = new PaymentDTO();
-			paymentDTO.setTrxamt(order.getPaymentAmountTl().multiply(new BigDecimal(100)).intValue());
-			paymentDTO.setReqsn(selectOrder.getSysNo());
-			paymentDTO.setOldreqsn(order.getSysNo());
-			paymentDTO.setOldtrxid(order.getOldTrxId());
-			return paymentClient.refund(paymentDTO);
+			settlementList.get(0).setPaymentStatus("2");
+			financeClient.updateSettlement(settlementList.get(0));
 		}
+		//微信退款
+		PaymentDTO paymentDTO = new PaymentDTO();
+		paymentDTO.setTrxamt(order.getPaymentAmountTl().multiply(new BigDecimal(100)).intValue());
+		paymentDTO.setReqsn(selectOrder.getSysNo());
+		paymentDTO.setOldreqsn(order.getSysNo());
+		paymentDTO.setOldtrxid(order.getOldTrxId());
+		return paymentClient.refund(paymentDTO);
 	}
 
 	@Override

+ 153 - 50
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -448,48 +448,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					item.setBillType(order.getBillType());
 					orderItemsMapper.updateById(item);
 				}
-				//特殊颜色
-				if (ObjectUtils.isNotNull(item.getPartsColourValue())) {
-					JSONArray objects = JSONArray.parseArray(item.getPartsColourValue());
-					List<OrderParts> categoryConstantInfos = objects.toJavaList(OrderParts.class);
-					saveOrderParts(categoryConstantInfos, item.getId(), "1", order.getId());
-				}
-				//特殊处理
-				if (ObjectUtils.isNotNull(item.getParts_handleValue())) {
-					JSONArray objects = JSONArray.parseArray(item.getParts_handleValue());
-					List<OrderParts> categoryConstantInfos = objects.toJavaList(OrderParts.class);
-					saveOrderParts(categoryConstantInfos, item.getId(), "2", order.getId());
-				}
-				//瓶帽配件
-				if (ObjectUtils.isNotNull(item.getPartsCapValue())) {
-					JSONArray objects = JSONArray.parseArray(item.getPartsCapValue());
-					List<OrderParts> categoryConstantInfos = objects.toJavaList(OrderParts.class);
-					saveOrderParts(categoryConstantInfos, item.getId(), "3", order.getId());
-				}
-				//阀门配件
-				if (ObjectUtils.isNotNull(item.getPartsValveValue())) {
-					JSONArray objects = JSONArray.parseArray(item.getPartsValveValue());
-					List<OrderParts> categoryConstantInfos = objects.toJavaList(OrderParts.class);
-					saveOrderParts(categoryConstantInfos, item.getId(), "4", order.getId());
-				}
-				//包装方式
-				if (ObjectUtils.isNotNull(item.getPartsModeValue())) {
-					JSONArray objects = JSONArray.parseArray(item.getPartsModeValue());
-					List<OrderParts> categoryConstantInfos = objects.toJavaList(OrderParts.class);
-					saveOrderParts(categoryConstantInfos, item.getId(), "5", order.getId());
-				}
-				//认证
-				if (ObjectUtils.isNotNull(item.getPartsAuthenticationValue())) {
-					JSONArray objects = JSONArray.parseArray(item.getPartsAuthenticationValue());
-					List<OrderParts> categoryConstantInfos = objects.toJavaList(OrderParts.class);
-					saveOrderParts(categoryConstantInfos, item.getId(), "6", order.getId());
-				}
-				//其他
-				if (ObjectUtils.isNotNull(item.getPartsOtherValue())) {
-					JSONArray objects = JSONArray.parseArray(item.getPartsOtherValue());
-					List<OrderParts> categoryConstantInfos = objects.toJavaList(OrderParts.class);
-					saveOrderParts(categoryConstantInfos, item.getId(), "7", order.getId());
-				}
 			});
 //			List<OrderItems> orderItemsList = orderItemsService.saveOrderItemsMessage(order.getOrderItemsList(), date, order.getId());
 			order.setOrderItemsList(order.getOrderItemsList());
@@ -1547,6 +1505,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			if (OrderTypeEnum.SALES.getType().equals(order.getBillType())) {
 				this.paymentApply(order, "收费", "销售");
 			}
+		} else if (OrderTypeEnum.EXPORT.getType().equals(order.getTradeType())) {
+			if (OrderTypeEnum.SALES.getType().equals(order.getBillType())) {
+				this.paymentApplyFD(order, "收费", "销售");
+			}
 		}
 
 
@@ -2445,6 +2407,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				orderMessage.setSales(salesUser.getData().getName());
 			}
 		}
+		orderMessage.setCurrentAmount(orderMessage.getDebitAmount().subtract(orderMessage.getSettlmentAmount()));
 		// 获取创建人中文名
 		R<User> createUser = userClient.userInfoById(orderMessage.getCreateUser());
 		if (!createUser.isSuccess() && createUser.getData() != null) {
@@ -2521,7 +2484,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			.eq("tenant_id", SecureUtil.getTenantId()).eq("status", 0).eq("is_deleted", 0).orderByAsc("id"));
 		orderMessage.setOrderModifyList(orderModifyList);
 		//获取订单结算信息
-		List<Settlement> settlementList = financeClient.selectListBySrcId(order.getId());
+		List<Settlement> settlementList = financeClient.selectListBySrcId(order.getId(), null);
 		orderMessage.setSettlementList(settlementList == null ? new ArrayList<>() : settlementList);
 		Acc acc = financeClient.selectBySrcId(orderMessage.getId());
 		if (ObjectUtils.isNotNull(acc)) {
@@ -2670,7 +2633,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	public R revoke(Order order) {
 		Order selectOrder = baseMapper.selectById(order.getId());
 		if (ObjectUtils.isNotNull(selectOrder)) {
-			List<Settlement> settlementList = financeClient.selectListBySrcId(selectOrder.getId());
+			List<Settlement> settlementList = financeClient.selectListBySrcId(selectOrder.getId(), null);
 			if (ObjectUtils.isNotNull(settlementList) && settlementList.size() > 0) {
 				throw new RuntimeException("该账单已结算,无法撤回");
 			}
@@ -2799,8 +2762,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			}
 			baseMapper.updateById(selectOrder);
 		} else {
+			Order selectOrder = baseMapper.selectById(order.getId());
+			if (ObjectUtils.isNotNull(selectOrder.getOldTrxId())) {
+				throw new RuntimeException("该单据为小程序数据,请到线上付款");
+			}
 			if (ObjectUtils.isNotNull(order.getCurrentAmount()) && !order.getCurrentAmount().equals(new BigDecimal(0))) {
-
 				List<Settlement> settlementList = new ArrayList<>();
 				if (ObjectUtils.isNotNull(order.getSettlementList()) && order.getSettlementList().size() > 0) {
 					settlementList = order.getSettlementList();
@@ -2821,7 +2787,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				order.setSettlementList(settlementList);
 				this.paymentApply(order, order.getBillType(), order.getTradeType());
 			} else {
-				List<Settlement> settlementList1 = financeClient.selectListBySrcId(order.getId());
+				List<Settlement> settlementList1 = financeClient.selectListBySrcId(order.getId(), null);
 				order.setSettlementList(settlementList1);
 				//获取订单结算信息
 				if (ObjectUtils.isNotNull(order.getSettlmentAmount()) && order.getSettlementList().size() > 0) {
@@ -4328,7 +4294,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	public R returnGoodsRefund(Order order) {
 
 		Order selectOrder = baseMapper.selectById(order.getId());
-
+		if (ObjectUtils.isNull(selectOrder.getOldTrxId())) {
+			throw new RuntimeException("未在线上支付,退款申请失败,请联系供货商!");
+		}
 		Order newOrder = new Order();
 		BeanUtil.copyProperties(selectOrder, newOrder);
 		newOrder.setSrcId(selectOrder.getId());
@@ -5080,6 +5048,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			for (OrderItems orderItems : orderItemsList) {
 				orderItems.setFudaPurchaseStatus("待采购");
 				orderItemsMapper.updateById(orderItems);
+				//瓶帽配件
+				if (ObjectUtils.isNotNull(orderItems.getPartsCapValue())) {
+					JSONArray objects = JSONArray.parseArray(orderItems.getPartsCapValue());
+					List<OrderParts> categoryConstantInfos = objects.toJavaList(OrderParts.class);
+					saveOrderParts(categoryConstantInfos, orderItems.getId(), "3", order.getId());
+				}
+				//阀门配件
+				if (ObjectUtils.isNotNull(orderItems.getPartsValveValue())) {
+					JSONArray objects = JSONArray.parseArray(orderItems.getPartsValveValue());
+					List<OrderParts> categoryConstantInfos = objects.toJavaList(OrderParts.class);
+					saveOrderParts(categoryConstantInfos, orderItems.getId(), "4", order.getId());
+				}
 			}
 			selectOrder.setFudaPurchaseStatus("待采购");
 			selectOrder.setOrderStatus("待采购");
@@ -5829,7 +5809,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			lambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getTenantId, AuthUtil.getTenantId()).eq(OrderItems::getPid, order.getId());
 			List<OrderItems> orderItemsList = orderItemsMapper.selectList(lambdaQueryWrapper);
 			// 保存订单明细
-			if (CollectionUtils.isNotEmpty(orderItemsList)) {
+			if (CollectionUtils.isNotEmpty(orderItemsList) && !"2".equals(selectOrder.getOrderSource())) {
 				//循环增减库存
 				for (OrderItems orderItems : orderItemsList) {
 					BigDecimal stockPrice = new BigDecimal("0.00");
@@ -6371,6 +6351,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			List<Long> itemIds = order.getOrderItemsList().stream().map(OrderItems::getItemId).distinct().collect(Collectors.toList());
 			StringBuilder goodsId = new StringBuilder();
 			for (Long itemId : itemIds) {
+				GoodsDesc goodsDesc = goodsDescClient.getGoodsDescDetail(itemId);
+				if (!"1".equals(goodsDesc.getUpperFrame())) {
+					throw new RuntimeException(goodsDesc.getCname() + "-该产品以下架,付款失败");
+				}
 				goodsId.append(itemId).append(",");
 			}
 			if (ObjectUtils.isNotNull(goodsId)) {
@@ -7022,8 +7006,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				order1.setId(order.getId());
 				order1.setSettlmentAmount(receivedAmount);
 				order1.setBalanceAmount(amount);
-				order1.setStatus(3);
-				order1.setActualPaymentStatus(2);
+				if (new BigDecimal("0.00").equals(amount)) {
+					order1.setStatus(3);
+					order1.setActualPaymentStatus(2);
+				} else {
+					order1.setStatus(0);
+					order1.setActualPaymentStatus(1);
+				}
 				baseMapper.updateById(order1);
 			}
 			//生成账单
@@ -7034,6 +7023,120 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		}
 	}
 
+	/**
+	 * 订单生成账单 并且推送财务消息
+	 *
+	 * @param order    订单信息
+	 * @param billType 货款类型: 申请 收费 付费
+	 * @param itemType 付款类型: 采购 销售 收货 发货
+	 */
+	@GlobalTransactional(rollbackFor = Exception.class)
+	@Transactional(rollbackFor = Exception.class)
+	public void paymentApplyFD(Order order, String billType, String itemType) {
+		//获取所属公司中文名
+		if (order.getBelongToCorpId() != null) {
+			R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(order.getBelongToCorpId());
+			if (corpMessage.isSuccess() && corpMessage.getData() != null) {
+				order.setBelongToCorpName(corpMessage.getData().getCname());
+			}
+		}
+		//获取客户中文名
+		if (order.getCorpId() != null) {
+			R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(order.getCorpId());
+			if (corpMessage.isSuccess() && corpMessage.getData() != null) {
+				order.setCorpsName(corpMessage.getData().getCname());
+			}
+		}
+		BigDecimal amount = BigDecimal.ZERO;//对账金额   销售订单生成的金额  销售金额-本次使用返利金额+费用明细
+		BigDecimal price = BigDecimal.ZERO;//对账单价
+		ApplyDTO applyDTO = new ApplyDTO();
+		applyDTO.setBillType(billType);
+		applyDTO.setTradeType(order.getTradeType());
+		applyDTO.setDc("D");
+		applyDTO.setBelongCompany(order.getBelongToCorpName());
+		applyDTO.setUrl(order.getUrl());
+		applyDTO.setPageStatus(order.getPageStatus());
+		applyDTO.setPageLabel(order.getPageLabel());
+		applyDTO.setCheckType(order.getCheckType());
+		applyDTO.setAccDate(order.getBusinesDate());
+		List<Items> itemsList = new ArrayList<>();
+		//获取订单明细信息
+		LambdaQueryWrapper<OrderItems> orderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		orderItemsLambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0);
+		orderItemsLambdaQueryWrapper.eq(OrderItems::getPid, order.getId());
+		orderItemsLambdaQueryWrapper.eq(OrderItems::getGoodType, 0);
+		List<OrderItems> orderItemsList = orderItemsService.list(orderItemsLambdaQueryWrapper);
+		if (CollectionUtils.isNotEmpty(orderItemsList)) {
+			amount = amount.add(orderItemsList.stream().map(OrderItems::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+		}
+		if (order.getThisUsedProfit() != null) {
+			amount = amount.subtract(order.getThisUsedProfit());
+		}
+		price = amount;
+		Items items = new Items();
+		items.setBelongToCorpId(order.getBelongToCorpId());
+		items.setSrcOrderno(order.getOrgOrderNo());
+		items.setItemType(itemType);
+		items.setCorpId(order.getCorpId());
+		items.setSrcParentId(order.getId());
+		items.setCurrency("CNY");
+		items.setExchangeRate(new BigDecimal(1));
+		items.setTaxRate(BigDecimal.ZERO);
+		items.setSrcType(1);
+		items.setTradeType(order.getTradeType());
+		items.setChargeMember(order.getChargeMember());
+		items.setAmount(amount);
+		items.setQuantity(new BigDecimal(1));
+		items.setPrice(price);
+		items.setUnit("条");
+		items.setRemarks(order.getOrderRemark());
+		//获取费用id
+		R<FeesDesc> fees = feesDescClient.getFeesByName("货款");
+		if (fees.isSuccess() && fees.getData() != null) {
+			items.setCostType(fees.getData().getId().toString());
+		}
+		itemsList.add(items);
+		applyDTO.setItemsList(itemsList);
+		if (CollectionUtils.isNotEmpty(itemsList)) {
+			//生成账单
+			R paymentApply = financeClient.paymentApply(applyDTO);
+			if (!paymentApply.isSuccess()) {
+				throw new RuntimeException(paymentApply.getMsg());
+			}
+			//给角色为财务的人发送消息
+			R<String> clientDeptIds = sysClient.getRoleIds(SecureUtil.getTenantId(), "财务");
+			if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
+				R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()));
+				if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
+					for (User datum : userList.getData()) {
+						//循环发送消息
+						Message sendMessage = new Message();
+						sendMessage.setParameter(String.valueOf(order.getId()));
+						sendMessage.setUserName(AuthUtil.getUserName());
+						sendMessage.setUserId(AuthUtil.getUserId());
+						sendMessage.setToUserId(datum.getId());
+						sendMessage.setToUserName(datum.getName());
+						sendMessage.setMessageType(1);
+						sendMessage.setTenantId(AuthUtil.getTenantId());
+						sendMessage.setCreateUser(AuthUtil.getUserId());
+						sendMessage.setCreateTime(new Date());
+						sendMessage.setUrl(order.getUrl());
+						sendMessage.setPageLabel(order.getPageLabel());
+						sendMessage.setPageStatus(order.getPageStatus());
+						sendMessage.setMessageBody(order.getBelongToCorpName() + " 您的客户:" + order.getCorpsName() + "的销售订单 " + order.getOrderNo() + "审核通过,请查看");
+						R save = messageClient.save(sendMessage);
+						if (!save.isSuccess()) {
+							throw new SecurityException("发送消息失败");
+						}
+					}
+				}
+			}
+			//修改原数据表示已生成账单
+			//修改商品明细
+			orderItemsMapper.submitPay(order.getId());
+		}
+	}
+
 	public List<Map<String, Object>> calculationDomestic(Order order, int type) {
 
 		//应收集合

+ 1 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/wing/accessories/WebpageController.java

@@ -55,6 +55,7 @@ public class WebpageController {
 		lambdaQueryWrapper.eq(Order::getTenantId, SecureUtil.getTenantId());//租户id
 		lambdaQueryWrapper.eq(Order::getIsDeleted, 0);//订单是否有效
 		lambdaQueryWrapper.like(Func.isNotEmpty(order.getOrderNo()), Order::getOrderNo, order.getOrderNo());//订单号
+		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getCorpTel()), Order::getCorpTel, order.getCorpTel());//手机号
 		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getStorageId()), Order::getStorageId, order.getStorageId());//仓库id
 		if ("线上".equals(order.getOrderSource())) {
 			if (ObjectUtils.isNotNull(order.getStatus()) && 1 == order.getStatus()) {

+ 20 - 9
blade-service/blade-stock/src/main/java/org/springblade/stock/controller/StockGoodsController.java

@@ -43,15 +43,13 @@ 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.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.stock.entity.StockGoods;
 import org.springblade.stock.excel.StockGoodsExcel;
 import org.springblade.stock.service.IStockGoodsService;
-import org.springblade.stock.vo.AppStockPartsVO;
-import org.springblade.stock.vo.AppStockVO;
-import org.springblade.stock.vo.GoodsDescDto;
-import org.springblade.stock.vo.StockGoodsVO;
+import org.springblade.stock.vo.*;
 import org.springblade.system.entity.Tenant;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
@@ -564,15 +562,15 @@ public class StockGoodsController extends BladeController {
 					appStockPartsVO1.setSalesPrice(goodsMessage.getData().getSpecialOffer());
 					appStockPartsVO1.setStandardPrice(goodsMessage.getData().getStandardPrice());
 				} else {
-					if ("零售价1".equals(finalShoppingMall)) {
+					if ("零售价".equals(finalShoppingMall)) {
 						appStockPartsVO1.setSalesPrice(goodsMessage.getData().getStandardPrice());
-					} else if ("零售价2".equals(finalShoppingMall)) {
+					} else if ("售价1".equals(finalShoppingMall)) {
 						appStockPartsVO1.setSalesPrice(goodsMessage.getData().getWholesalePrice());
-					} else if ("零售价3".equals(finalShoppingMall)) {
+					} else if ("售价2".equals(finalShoppingMall)) {
 						appStockPartsVO1.setSalesPrice(goodsMessage.getData().getRepairDepotPrice());
-					} else if ("零售价4".equals(finalShoppingMall)) {
+					} else if ("售价3".equals(finalShoppingMall)) {
 						appStockPartsVO1.setSalesPrice(goodsMessage.getData().getStorePrice());
-					} else if ("零售价5".equals(finalShoppingMall)) {
+					} else if ("售价4".equals(finalShoppingMall)) {
 						appStockPartsVO1.setSalesPrice(goodsMessage.getData().getPrice());
 					} else if ("特价".equals(finalShoppingMall)) {
 						appStockPartsVO1.setSalesPrice(goodsMessage.getData().getSpecialOffer());
@@ -594,6 +592,19 @@ public class StockGoodsController extends BladeController {
 	}
 
 	/**
+	 * 自定义分页 手机端库存(新-配件)
+	 */
+	@GetMapping("/leading-out")
+	public void stockPartsPage(HttpServletResponse response, AppStockPartsVO appStockPartsVO) {
+		appStockPartsVO.setTenantId(AuthUtil.getTenantId());
+		if (appStockPartsVO.getLabel() != null && appStockPartsVO.getLabel().length > 0) {
+			appStockPartsVO.setLabels(StringUtil.join(appStockPartsVO.getLabel(), ","));
+		}
+		List<AppStockPartsVO> appStockPartsList = stockGoodsService.selectAppStockPartsList(appStockPartsVO);
+		ExcelUtil.export(response, "导出库存数据", "导出数据表", BeanUtil.copy(appStockPartsList, AppStockPartsExcel.class), AppStockPartsExcel.class);
+	}
+
+	/**
 	 * 自定义分页 手机端库存
 	 */
 	@GetMapping("/appStatistics")

+ 2 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.java

@@ -65,4 +65,6 @@ public interface StockGoodsMapper extends BaseMapper<StockGoods> {
 	List<AppStockPartsVO> selectAppStockStatistics(@Param("stock") AppStockPartsVO appStockPartsVO);
 
 	AppStockPartsVO stockPartsDetails(@Param("stock") AppStockPartsVO appStockPartsVO);
+
+    List<AppStockPartsVO> selectAppStockPartsList( @Param("stock") AppStockPartsVO appStockPartsVO);
 }

+ 148 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.xml

@@ -434,6 +434,154 @@
             </if>
         </where>
     </select>
+    <select id="selectAppStockPartsList" resultType="org.springblade.stock.vo.AppStockPartsVO">
+        SELECT
+        t1.id,
+        t1.surplus_route_quantity AS balance,
+        t1.lower_limit AS lowerLimit,
+        t1.stock_price AS stockPrice,
+        t1.storage_id AS storageId,
+        t2.cname AS storage,
+        t3.cname AS goods,
+        t3.id AS goodsId,
+        t3.brand_item AS brandItem,
+        t3.standard_price AS salesPrice,
+        t3.purchase_price AS purchasePrice,
+        t3.label AS labels,
+        t3.upper_frame AS upperFrame,
+        t3.sales_volumes AS salesVolumes,
+        t4.cname AS goodsType,
+        t5.url AS url,
+        t1.remarks AS remarks,
+        t1.update_time AS updateTime,
+        t1.arrears AS arrears,
+        t1.status AS status,
+        t1.balance_amount AS balanceAmount
+        FROM
+        business_stock_goods t1
+        LEFT JOIN basic_storage_desc t2 ON t1.storage_id = t2.id
+        LEFT JOIN basic_goods_desc t3 ON t1.goods_id = t3.id
+        LEFT JOIN basic_goods_type t4 ON t3.goods_type_id = t4.id
+        LEFT JOIN basic_goods_files t5 ON t3.id = t5.pid
+        AND t5.version = '0' and t5.is_deleted = 0
+        <where>
+            t1.is_deleted = 0
+            and t3.status = 0
+            and t1.tenant_id = #{stock.tenantId}
+            <if test="stock.goods != null and stock.goods != ''">
+                and (t3.cname like concat('%', #{stock.goods}, '%') or t3.cname_int like concat('%', #{stock.goods}, '%') or t3.code like concat('%', #{stock.goods}, '%'))
+            </if>
+            <if test="stock.upperFrame != null and stock.upperFrame != ''">
+                and t3.upper_frame = #{stock.upperFrame}
+            </if>
+            <if test="stock.brand != null and stock.brand != ''">
+                and t3.brand = #{stock.brand}
+            </if>
+            <if test="stock.goodsTypeId != null and stock.goodsTypeId != ''">
+                and find_in_set(t4.id,#{stock.goodsTypeId})
+            </if>
+            <if test="stock.labels != null and stock.labels != ''">
+                and find_in_set(#{stock.labels},t3.label)
+            </if>
+            <if test="stock.storageId != null">
+                and t1.storage_id = #{stock.storageId}
+            </if>
+            <if test="stock.goodsId != null">
+                and t1.goods_id = #{stock.goodsId}
+            </if>
+            <if test="stock.status != null and stock.status != ''">
+                and t1.status = #{stock.status}
+            </if>
+            <if test="stock.inventoryBalance != null and stock.inventoryBalance != '' and stock.inventoryBalance == 0">
+                and t1.surplus_route_quantity > 0
+            </if>
+            <if test="stock.inventoryBalance != null and stock.inventoryBalance != '' and stock.inventoryBalance == 1">
+                and t1.surplus_route_quantity &lt;= 0
+            </if>
+            <if test="stock.date != null and stock.date != '' and stock.date == 0">
+                and date_format(t1.in_date, '%Y %m') = date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y %m')
+            </if>
+            <if test="stock.date != null and stock.date != '' and stock.date == 1">
+                and YEARWEEK(date_format(t1.in_date,'%Y-%m-%d'),1) = YEARWEEK(now(),7)
+            </if>
+            <if test="stock.date != null and stock.date != '' and stock.date == 2">
+                and date_format(t1.in_date, '%Y %m') = date_format(DATE_SUB(curdate(), INTERVAL 0 MONTH),'%Y %m')
+            </if>
+            <if test='stock.sort != null and stock.sort != "" and stock.sort == "0"'>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.sortType == "1"'>
+                    ORDER BY t3.cname ASC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.sortType == "3"'>
+                    ORDER BY t1.surplus_route_quantity ASC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "零售价" and stock.sortType == "2"'>
+                    ORDER BY t3.standard_price ASC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "售价1" and stock.sortType == "2"'>
+                    ORDER BY t3.wholesale_price ASC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "售价2" and stock.sortType == "2"'>
+                    ORDER BY t3.repair_depot_price ASC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "售价3" and stock.sortType == "2"'>
+                    ORDER BY t3.store_price ASC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "售价4" and stock.sortType == "2"'>
+                    ORDER BY t3.price ASC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "特价" and stock.sortType == "2"'>
+                    ORDER BY t3.special_offer ASC
+                </if>
+            </if>
+            <if test='stock.sort != null and stock.sort != "" and stock.sort == "1"'>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.sortType == "1"'>
+                    ORDER BY t3.cname DESC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.sortType == "3"'>
+                    ORDER BY t1.surplus_route_quantity DESC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "零售价" and stock.sortType == "2"'>
+                    ORDER BY t3.standard_price DESC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "售价1" and stock.sortType == "2"'>
+                    ORDER BY t3.wholesale_price DESC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "售价2" and stock.sortType == "2"'>
+                    ORDER BY t3.repair_depot_price DESC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "售价3" and stock.sortType == "2"'>
+                    ORDER BY t3.store_price DESC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "售价4" and stock.sortType == "2"'>
+                    ORDER BY t3.price DESC
+                </if>
+                <if test='stock.sortType != null and stock.sortType != "" and stock.userType == "特价" and stock.sortType == "2"'>
+                    ORDER BY t3.special_offer DESC
+                </if>
+            </if>
+            <if test="stock.sort == null and stock.userType == '零售价'">
+                ORDER BY t3.standard_price ASC
+            </if>
+            <if test="stock.sort == null and stock.userType == '售价1'">
+                ORDER BY t3.wholesale_price ASC
+            </if>
+            <if test="stock.sort == null and stock.userType == '售价2'">
+                ORDER BY t3.repair_depot_price ASC
+            </if>
+            <if test="stock.sort == null and stock.userType == '售价3'">
+                ORDER BY t3.store_price ASC
+            </if>
+            <if test="stock.sort == null and stock.userType == '售价4'">
+                ORDER BY t3.price ASC
+            </if>
+            <if test="stock.sort == null and stock.userType == '特价'">
+                ORDER BY t3.special_offer ASC
+            </if>
+            <if test="stock.sort == null and stock.userType == ''">
+                ORDER BY t1.create_time desc
+            </if>
+        </where>
+    </select>
     <update id="updateStockGoods" parameterType="org.springblade.stock.entity.StockGoods">
         UPDATE business_stock_goods
         SET surplus_route_quantity = #{surplusRouteQuantity},

+ 2 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/service/IStockGoodsService.java

@@ -139,4 +139,6 @@ public interface IStockGoodsService extends IService<StockGoods> {
 	List<AppStockPartsVO> selectAppStockStatistics(AppStockPartsVO appStockPartsVO);
 
 	AppStockPartsVO stockPartsDetails(AppStockPartsVO appStockPartsVO);
+
+	List<AppStockPartsVO> selectAppStockPartsList(AppStockPartsVO appStockPartsVO);
 }

+ 5 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java

@@ -390,4 +390,9 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 		return baseMapper.stockPartsDetails(appStockPartsVO);
 	}
 
+	@Override
+	public List<AppStockPartsVO> selectAppStockPartsList(AppStockPartsVO appStockPartsVO) {
+		return baseMapper.selectAppStockPartsList(appStockPartsVO);
+	}
+
 }

+ 6 - 18
blade-service/trade-finance/src/main/java/org/springblade/finance/controller/SettlementController.java

@@ -262,7 +262,7 @@ public class SettlementController extends BladeController {
 	}
 
 	/**
-	 *  结算表
+	 * 结算表
 	 */
 	@PostMapping("/dataAnalysisList")
 	@ApiOperationSupport(order = 2)
@@ -316,8 +316,7 @@ public class SettlementController extends BladeController {
 			ExcelUtil.export(response, "付款结算", "付费结算", excelList, ExpenseExcel.class);
 		} else if (settlement.getBillType().equals("收费")) {
 			ExcelUtil.export(response, "收款结算", "收费结算", excelList, ExpenseExcel.class);
-		}
-		else if (settlement.getBillType().equals("对账")) {
+		} else if (settlement.getBillType().equals("对账")) {
 			ExcelUtil.export(response, "对账", "对账", excelList, ExpenseExcel.class);
 		}
 	}
@@ -354,24 +353,12 @@ public class SettlementController extends BladeController {
 		return R.data(settlementService.saveOrEdit(dto));
 	}
 
-	/**
-	 * 新增 结算表
-	 @PostMapping("/save")
-	 @ApiOperationSupport(order = 4)
-	 @ApiOperation(value = "新增", notes = "传入settlement")
-	 public R save(@Valid @RequestBody Settlement settlement) {
-	 return R.status(settlementService.save(settlement));
-	 }
-
-	 *//**
-	 * 修改 结算表
-	 *//*
 	@PostMapping("/update")
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入settlement")
 	public R update(@Valid @RequestBody Settlement settlement) {
 		return R.status(settlementService.updateById(settlement));
-	}*/
+	}
 
 	/**
 	 * 新增或修改 结算表
@@ -759,7 +746,7 @@ public class SettlementController extends BladeController {
 	 * 撤销审核
 	 */
 	@GetMapping("/selectListBySrcId")
-	public List<Settlement> selectListBySrcId(@RequestParam(value = "srcId") Long srcId) {
+	public List<Settlement> selectListBySrcId(@RequestParam(value = "srcId") Long srcId, @RequestParam(value = "paymentType", required = false) String paymentType) {
 		if (srcId == null) {
 			throw new SecurityException("缺少必要的参数");
 		}
@@ -767,6 +754,7 @@ public class SettlementController extends BladeController {
 		settlementLambdaQueryWrapper.eq(Settlement::getIsDeleted, 0);
 		settlementLambdaQueryWrapper.eq(Settlement::getTenantId, AuthUtil.getTenantId());
 		settlementLambdaQueryWrapper.eq(Settlement::getSrcBillId, srcId);
+		settlementLambdaQueryWrapper.eq(ObjectUtils.isNotNull(paymentType), Settlement::getPaymentType, paymentType);
 		List<Settlement> settlementList = settlementService.list(settlementLambdaQueryWrapper);
 		return settlementList;
 	}
@@ -775,7 +763,7 @@ public class SettlementController extends BladeController {
 	 * 获得收付款信息
 	 */
 	@GetMapping("/selectSrcOrderNo")
-	public List<Settlement> selectSrcOrderNo(@RequestParam(value = "srcOrderNo") String  srcOrderNo) {
+	public List<Settlement> selectSrcOrderNo(@RequestParam(value = "srcOrderNo") String srcOrderNo) {
 		if (srcOrderNo == null) {
 			throw new SecurityException("缺少必要的参数");
 		}

+ 28 - 24
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -29,8 +29,6 @@ import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
-import org.abego.treelayout.internal.util.java.util.ListUtil;
-import org.apache.commons.collections4.ListUtils;
 import org.springblade.box.tube.entity.DeclareCustomsFees;
 import org.springblade.box.tube.entity.RepairFees;
 import org.springblade.box.tube.entity.TradingBoxFees;
@@ -613,6 +611,11 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 			}
 			//原业务表,计算应收未收款,应收未收款 = 销售金额 - 本次溢付款 - 已收款
 			client.setBalanceAmount((client.getDebitAmount().subtract(client.getSettlmentAmount())).subtract(client.getCaseOverPayment()));
+			if (!items.getAmount().equals(items.getThisAmount())) {
+				client.setDepositReceived("");
+			} else {
+				client.setBalancePayment("");
+			}
 			orderDescClient.updateOrder(client);
 		}
 		//修改费用明细
@@ -893,6 +896,11 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 			accMapper.updateById(acc);
 			//原业务表,计算应收未收款,应收未收款 = 销售金额 - 本次溢付款 - 已收款
 			client.setBalanceAmount((client.getDebitAmount().subtract(client.getSettlmentAmount())).subtract(client.getCaseOverPayment()));
+			if (!items.getAmount().equals(items.getThisAmount())) {
+				client.setDepositReceived("定金到账");
+			} else {
+				client.setBalancePayment("尾款");
+			}
 			orderDescClient.updateOrder(client);
 
 		}
@@ -1281,20 +1289,6 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 	@Transactional
 	public void paymentApply(List<Items> itemsList, String billType, String belongCompany, String tradeType) {
 		itemsList.forEach(e -> {
-			//产生凭证: 销售订单-生成账单
-		/*	if(e.getSrcType()==1 && e.getItemType().equals("销售"))
-			{
-				try
-				{
-					String accountName="金蝶开发者测试账套";
-					//测试账套-销售保存凭证
-					this.testSaleSaveVoucher(belongCompany,e);
-				}
-				catch (Exception exception)
-				{
-					throw new SecurityException(exception.getMessage());
-				}
-			}*/
 			Acc acc = new Acc();
 			BeanUtils.copyProperties(e, acc);
 			String tradeType_ = "";
@@ -1317,15 +1311,23 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 							throw new SecurityException("财务-修改原单据的费用明细错误");
 						}
 					} else {
-						OrderItems client = orderItemsClient.getById(e.getSrcFeesId());
-						if (client == null) {
-							throw new SecurityException("未查到原单据的商品明细,无法修改状态");
-						}
-						client.setSubmitPay(1);
-						R submit = orderItemsClient.submit(client);
-						if (!submit.isSuccess()) {
-							throw new SecurityException("财务-修改原单据的商品明细错误");
+						if (ObjectUtils.isNotNull(e.getSrcFeesId())) {
+							OrderItems client = orderItemsClient.getById(e.getSrcFeesId());
+							if (client == null) {
+								throw new SecurityException("未查到原单据的商品明细,无法修改状态");
+							}
+							client.setSubmitPay(1);
+							R submit = orderItemsClient.submit(client);
+							if (!submit.isSuccess()) {
+								throw new SecurityException("财务-修改原单据的商品明细错误");
+							}
+						} else {
+							R submit = orderItemsClient.submitPay(e.getSrcParentId());
+							if (!submit.isSuccess()) {
+								throw new SecurityException("财务-修改原单据的商品明细错误");
+							}
 						}
+
 					}
 				}
 				acc.setBillType(billType);
@@ -2667,6 +2669,8 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 						model.setSrcBillId(acc.getSrcId());
 						model.setItemType(acc.getItemType());
 						model.setSysNo(String.valueOf(System.currentTimeMillis()));
+						model.setPaymentStatus(dto.getPaymentStatus());
+						model.setPaymentType(dto.getPaymentType());
 						if (ObjectUtils.isNotNull(dto.getTenantId())) {
 							model.setTenantId(dto.getTenantId());
 						} else {