Browse Source

2023年2月22日16:30:49

纪新园 2 years ago
parent
commit
f7d5f140e0
13 changed files with 984 additions and 227 deletions
  1. 12 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java
  2. 3 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/feign/IOrderDescClient.java
  3. 1 1
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TradingBoxServiceImpl.java
  4. 80 50
      blade-service/blade-client/src/main/java/org/springblade/client/corps/controller/CorpsDescController.java
  5. 6 2
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java
  6. 48 0
      blade-service/blade-pay/pom.xml
  7. 133 35
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/TongLianPaymentController.java
  8. 2 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/export/ExportOrderController.java
  9. 5 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java
  10. 34 2
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderItemsClient.java
  11. 59 98
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/partsapp/AppPartsController.java
  12. 2 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java
  13. 599 39
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

+ 12 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java

@@ -1319,6 +1319,18 @@ public class Order implements Serializable {
 	@ApiModelProperty(value = "收银宝平台流水号")
 	private String oldTrxId;
 
+	/**
+	 * 快递单号
+	 */
+	@ApiModelProperty(value = "快递单号")
+	private String courierNumber;
+
+	/**
+	 * 快递公司
+	 */
+	@ApiModelProperty(value = "快递公司")
+	private String courierCorporation;
+
 
 	/**
 	 * 采购状态类型

+ 3 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/feign/IOrderDescClient.java

@@ -37,6 +37,7 @@ public interface IOrderDescClient {
 	String PASS_CHECK_TH=API_PREFIX+"/passCheckTH";
 	String SHIPPING_ORDER=API_PREFIX+"/shippingOrder";
 	String GET_BY_ORDER_QUANTITY = API_PREFIX + "/getByOrderQuantity";
+	String SAVE = API_PREFIX + "/save";
 
 	/**
 	 * 修改采购订单状态
@@ -106,4 +107,6 @@ public interface IOrderDescClient {
 	 */
 	@GetMapping(GET_BY_ORDER_QUANTITY)
 	List<OrderStatisticsVo> getByOrderQuantity(@RequestParam("year") Integer year, @RequestParam("month") Integer month, @RequestParam("corpId") Long corpId);
+	@GetMapping(SAVE)
+	boolean save(Order orderNew);
 }

+ 1 - 1
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TradingBoxServiceImpl.java

@@ -1208,7 +1208,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 				tradingBoxFees.setCreateUser(AuthUtil.getUserId());
 				tradingBoxFees.setCreateTime(new Date());
 				tradingBoxFees.setTenantId(AuthUtil.getTenantId());
-				tradingBoxFees.setSubmitPay(1);
+				tradingBoxFees.setSubmitPay(0);
 				tradingBoxFeesMapper.insert(tradingBoxFees);
 				tradingBoxFeesList.add(tradingBoxFees);
 

+ 80 - 50
blade-service/blade-client/src/main/java/org/springblade/client/corps/controller/CorpsDescController.java

@@ -16,10 +16,8 @@ import org.springblade.client.corps.service.ICorpsDescService;
 import org.springblade.client.corps.service.ICorpsTypeDescService;
 import org.springblade.client.corps.service.ICorpsTypeService;
 import org.springblade.client.corps.service.impl.CorpsAddrServiceImpl;
-import org.springblade.client.entity.CorpsAddr;
-import org.springblade.client.entity.CorpsDesc;
-import org.springblade.client.entity.CorpsType;
-import org.springblade.client.entity.CorpsTypeDesc;
+import org.springblade.client.corps.service.impl.CorpsAttnServiceImpl;
+import org.springblade.client.entity.*;
 import org.springblade.client.feign.IRedisClient;
 import org.springblade.client.vo.CorpListVo;
 import org.springblade.client.vo.CorpsDescVO;
@@ -65,6 +63,7 @@ public class CorpsDescController extends BladeController {
 	private final ICorpsTypeDescService corpsTypeDescService;
 	private final IRedisClient redisClient;//redis缓存处理
 	private CorpsAddrServiceImpl corpsAddrService;
+	private CorpsAttnServiceImpl corpsAttnService;
 
 	/**
 	 * 详情
@@ -91,8 +90,8 @@ public class CorpsDescController extends BladeController {
 		IPage<CorpsDescVO> pages = corpsDescService.selectCorpsDescPage(Condition.getPage(query), corpsDesc);
 
 		String belongtocompany = "";//所属公司ids
-		for (CorpsDescVO descVO: pages.getRecords()){
-			if (ObjectUtil.isNotEmpty(descVO.getBelongtocompany())){
+		for (CorpsDescVO descVO : pages.getRecords()) {
+			if (ObjectUtil.isNotEmpty(descVO.getBelongtocompany())) {
 				belongtocompany = belongtocompany + descVO.getBelongtocompany() + ",";
 			}
 		}
@@ -112,7 +111,7 @@ public class CorpsDescController extends BladeController {
 					}
 					item.setAdminProfilesName(stringBuffer.toString());
 				}
-				if (item.getBelongtocompany() != null){
+				if (item.getBelongtocompany() != null) {
 					if (ObjectUtil.isNotEmpty(corpsDescList)) {
 						item.setBelongCompany(corpsDescList.stream().filter(e -> e.getId().toString().equals(item.getBelongtocompany())).findFirst().get().getCname());
 					}
@@ -131,7 +130,7 @@ public class CorpsDescController extends BladeController {
 				}
 				//获取客户地址
 				List<CorpsAddr> corpsAddrList = corpsAddrService.list(new QueryWrapper<CorpsAddr>().eq("pid", item.getId()).eq("is_deleted", 0).eq("status", 0).eq("type", 0));
-				if (corpsAddrList != null && corpsAddrList.size()>0) {
+				if (corpsAddrList != null && corpsAddrList.size() > 0) {
 					item.setAddr(corpsAddrList.get(0).getDetailedAddress());
 				}
 			});
@@ -241,11 +240,11 @@ public class CorpsDescController extends BladeController {
 		if ("NotUNIQUE".equals(corpsDescService.selectCorpsDescCname(corpsDesc))) {
 			return R.data(200, "error", "客户名称已存在");
 		}
-		if(StringUtils.isBlank(corpsDesc.getLabels())){
+		if (StringUtils.isBlank(corpsDesc.getLabels())) {
 //			corpsDesc.setLabels("\"\",\"\",\"\",\"\"");
 			corpsDesc.setLabels(",,,");
 		}
-		if (ObjectUtils.isNull(corpsDesc.getCorpsTypeId())){
+		if (ObjectUtils.isNull(corpsDesc.getCorpsTypeId())) {
 			corpsDesc.setCorpsTypeId("1586314518265356290");
 		}
 		R corpsDesc1 = corpsDescService.submit(corpsDesc);
@@ -357,15 +356,15 @@ public class CorpsDescController extends BladeController {
 		lambdaQueryWrapper.eq(CorpsDesc::getTenantId, AuthUtil.getTenantId());
 		lambdaQueryWrapper.eq(CorpsDesc::getIsDeleted, 0);
 		lambdaQueryWrapper.like(StringUtil.isNotBlank(corpsDesc.getCname()), CorpsDesc::getCname, corpsDesc.getCname());
-		if ("234557".equals(AuthUtil.getTenantId())){
+		if ("234557".equals(AuthUtil.getTenantId())) {
 //			lambdaQueryWrapper.like(StringUtil.isNotBlank(corpsDesc.getCorpType()), CorpsDesc::getCorpType, corpsDesc.getCorpType());
 			lambdaQueryWrapper.apply("find_in_set(corp_type,'" + corpsDesc.getCorpType() + "')");
-		}else{
+		} else {
 			lambdaQueryWrapper.like(StringUtil.isNotBlank(corpsDesc.getCorpType()), CorpsDesc::getCorpType, corpsDesc.getCorpType());
 		}
 
 		String role = AuthUtil.getUserRole();
-		if (!role.contains("admin")){//admin能看全部,不是admin根据分管员查询
+		if (!role.contains("admin")) {//admin能看全部,不是admin根据分管员查询
 			if (Func.isNotEmpty(corpsDesc.getAdminProfiles())) {
 				lambdaQueryWrapper.and(i -> i.like(CorpsDesc::getAdminProfiles, corpsDesc.getAdminProfiles()).or().eq(CorpsDesc::getAdminProfiles, ' ')
 					.or().isNull(CorpsDesc::getAdminProfiles));
@@ -406,8 +405,8 @@ public class CorpsDescController extends BladeController {
 		List<CorpsDescVO> listRest = new ArrayList<>();
 
 		voList.forEach(desc -> {
-			if (StringUtils.isNotBlank(desc.getInitials())){
-				if (desc.getInitials().equals("A") || desc.getInitials().equals("a")){
+			if (StringUtils.isNotBlank(desc.getInitials())) {
+				if (desc.getInitials().equals("A") || desc.getInitials().equals("a")) {
 					listA.add(desc);
 				} else if (desc.getInitials().equals("B") || desc.getInitials().equals("b")) {
 					listB.add(desc);
@@ -459,10 +458,10 @@ public class CorpsDescController extends BladeController {
 					listY.add(desc);
 				} else if (desc.getInitials().equals("Z") || desc.getInitials().equals("z")) {
 					listZ.add(desc);
-				}else {
+				} else {
 					listRest.add(desc);
 				}
-			}else {
+			} else {
 				listRest.add(desc);
 			}
 		});
@@ -510,13 +509,13 @@ public class CorpsDescController extends BladeController {
 		lambdaQueryWrapper.like(CorpsDesc::getCorpType, corpsDesc.getCorpType());
 
 		String role = AuthUtil.getUserRole();
-		if (!role.contains("admin")){//admin能看全部,不是admin根据分管员查询
+		if (!role.contains("admin")) {//admin能看全部,不是admin根据分管员查询
 			if (Func.isNotEmpty(corpsDesc.getAdminProfiles())) {
 				lambdaQueryWrapper.and(i -> i.like(CorpsDesc::getAdminProfiles, corpsDesc.getAdminProfiles()).or().eq(CorpsDesc::getAdminProfiles, ' ')
 					.or().isNull(CorpsDesc::getAdminProfiles));
 			}
 		}
-		if (!"234557".equals(AuthUtil.getTenantId())){
+		if (!"234557".equals(AuthUtil.getTenantId())) {
 			lambdaQueryWrapper.orderByAsc(CorpsDesc::getCname);
 		}
 		//获得客户信息
@@ -571,14 +570,14 @@ public class CorpsDescController extends BladeController {
 		if ("KG".equals(corpsDesc.getCorpType())) {
 			lambdaQueryWrapper.and(i -> i.like(CorpsDesc::getCorpType, "KH").or().like(CorpsDesc::getCorpType, "GYS"));
 		} else {
-			if ("234557".equals(AuthUtil.getTenantId())){
+			if ("234557".equals(AuthUtil.getTenantId())) {
 				lambdaQueryWrapper.apply("find_in_set(corp_type,'" + corpsDesc.getCorpType() + "')");
-			}else{
+			} else {
 				lambdaQueryWrapper.like(CorpsDesc::getCorpType, corpsDesc.getCorpType());
 			}
 		}
 		String role = AuthUtil.getUserRole();
-		if (!role.contains("admin")){//admin能看全部,不是admin根据分管员查询
+		if (!role.contains("admin")) {//admin能看全部,不是admin根据分管员查询
 			if (Func.isNotEmpty(corpsDesc.getAdminProfiles())) {
 				lambdaQueryWrapper.and(i -> i.like(CorpsDesc::getAdminProfiles, corpsDesc.getAdminProfiles()).or().eq(CorpsDesc::getAdminProfiles, ' ')
 					.or().isNull(CorpsDesc::getAdminProfiles));
@@ -587,7 +586,7 @@ public class CorpsDescController extends BladeController {
 		if (StringUtils.isNotBlank(corpsDesc.getBelongtocompany())) {
 			lambdaQueryWrapper.and(i -> i.eq(CorpsDesc::getBelongtocompany, corpsDesc.getBelongtocompany()).or().isNull(CorpsDesc::getBelongtocompany));
 		}
-		if (!"234557".equals(AuthUtil.getTenantId())){
+		if (!"234557".equals(AuthUtil.getTenantId())) {
 			lambdaQueryWrapper.orderByAsc(CorpsDesc::getCname);
 		}
 		List<CorpsDesc> corpsDescList = corpsDescService.list(lambdaQueryWrapper);
@@ -616,7 +615,7 @@ public class CorpsDescController extends BladeController {
 		lambdaQueryWrapper.eq(CorpsDesc::getIsDeleted, 0);
 		lambdaQueryWrapper.eq(CorpsDesc::getTenantId, SecureUtil.getTenantId());
 		lambdaQueryWrapper.eq(CorpsDesc::getCorpType, "CD");
-		if (!"234557".equals(AuthUtil.getTenantId())){
+		if (!"234557".equals(AuthUtil.getTenantId())) {
 			lambdaQueryWrapper.orderByAsc(CorpsDesc::getCname);
 		}
 
@@ -632,7 +631,7 @@ public class CorpsDescController extends BladeController {
 	@ApiOperationSupport(order = 11)
 	@ApiOperation(value = "所有客户信息", notes = "获得客户信息")
 	public R<List<CorpsDesc>> bidingCorpsList(CorpsDescVO corpsDesc) {
-		if (ObjectUtils.isNotNull(corpsDesc.getCorpsTypeName())){
+		if (ObjectUtils.isNotNull(corpsDesc.getCorpsTypeName())) {
 			LambdaQueryWrapper<CorpsType> corpsTypeLambdaQueryWrapper = new LambdaQueryWrapper<>();
 			corpsTypeLambdaQueryWrapper.eq(CorpsType::getIsDeleted, 0);
 			corpsTypeLambdaQueryWrapper.eq(CorpsType::getTenantId, SecureUtil.getTenantId());
@@ -642,9 +641,9 @@ public class CorpsDescController extends BladeController {
 			LambdaQueryWrapper<CorpsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 			lambdaQueryWrapper.eq(CorpsDesc::getIsDeleted, 0);
 			lambdaQueryWrapper.eq(CorpsDesc::getTenantId, SecureUtil.getTenantId());
-			if ("234557".equals(AuthUtil.getTenantId())){
+			if ("234557".equals(AuthUtil.getTenantId())) {
 				lambdaQueryWrapper.eq(CorpsDesc::getCorpType, "CD");
-			}else {
+			} else {
 				lambdaQueryWrapper.eq(CorpsDesc::getCorpType, "KH");
 				lambdaQueryWrapper.orderByAsc(CorpsDesc::getCname);
 			}
@@ -657,7 +656,7 @@ public class CorpsDescController extends BladeController {
 				List<CorpsTypeDesc> list = corpsTypeDescService.list(typeDescLambdaQueryWrapper);
 				if (CollectionUtils.isNotEmpty(list)) {
 					corpsDesc.setTypeList(list.stream().filter(e -> e.getCorpId() != null).map(CorpsTypeDesc::getCorpId).collect(Collectors.toList()));
-				}else{
+				} else {
 					return R.data(new ArrayList<>());
 				}
 				lambdaQueryWrapper.in(CollectionUtils.isNotEmpty(corpsDesc.getTypeList()), CorpsDesc::getId, corpsDesc.getTypeList());
@@ -666,7 +665,7 @@ public class CorpsDescController extends BladeController {
 			} else {
 				return R.data(new ArrayList<>());
 			}
-		}else{
+		} else {
 			return R.data(new ArrayList<>());
 		}
 	}
@@ -732,26 +731,27 @@ public class CorpsDescController extends BladeController {
 		}
 		return corpsDescService.importFactoryData(excelList, false);
 	}
+
 	/**
 	 * 获取分管员
 	 */
 	@GetMapping("/adminProfiles")
 	@ApiOperationSupport(order = 10)
 	@ApiOperation(value = "获取分管员", notes = "客户类别必传")
-	public R<List<Map<String,Object>>> adminProfiles(CorpsDescVO corpsDesc) {
-		if (StringUtils.isBlank(corpsDesc.getCorpType())){
+	public R<List<Map<String, Object>>> adminProfiles(CorpsDescVO corpsDesc) {
+		if (StringUtils.isBlank(corpsDesc.getCorpType())) {
 			throw new SecurityException("请选择要查询的客户类别");
 		}
-		if (corpsDesc.getId() == null){
+		if (corpsDesc.getId() == null) {
 			throw new SecurityException("请选择要查询的客户");
 		}
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		LambdaQueryWrapper<CorpsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(CorpsDesc::getIsDeleted,0);
-		lambdaQueryWrapper.eq(CorpsDesc::getId,corpsDesc.getId());
-		lambdaQueryWrapper.eq(CorpsDesc::getTenantId,SecureUtil.getTenantId());
-		lambdaQueryWrapper.eq(CorpsDesc::getCorpType,corpsDesc.getCorpType());
-		if (!"234557".equals(AuthUtil.getTenantId())){
+		lambdaQueryWrapper.eq(CorpsDesc::getIsDeleted, 0);
+		lambdaQueryWrapper.eq(CorpsDesc::getId, corpsDesc.getId());
+		lambdaQueryWrapper.eq(CorpsDesc::getTenantId, SecureUtil.getTenantId());
+		lambdaQueryWrapper.eq(CorpsDesc::getCorpType, corpsDesc.getCorpType());
+		if (!"234557".equals(AuthUtil.getTenantId())) {
 			lambdaQueryWrapper.orderByAsc(CorpsDesc::getCname);
 		}
 		List<CorpsDesc> corpsDescList = corpsDescService.list(lambdaQueryWrapper);
@@ -764,9 +764,9 @@ public class CorpsDescController extends BladeController {
 						list.forEach(items -> {
 							R<User> user = userClient.userInfoById(Long.valueOf(items));
 							if (user.isSuccess() && user.getData() != null) {
-								Map<String,Object> map = new HashMap<>();
-								map.put("id",items);
-								map.put("cname",user.getData().getName());
+								Map<String, Object> map = new HashMap<>();
+								map.put("id", items);
+								map.put("cname", user.getData().getName());
 								mapList.add(map);
 							}
 						});
@@ -784,10 +784,10 @@ public class CorpsDescController extends BladeController {
 	public R<List<CorpsDescVO>> listAll(@RequestParam("corpType") String corpType) {
 		redisClient.basicData("corps");
 		QueryWrapper<CorpsDesc> queryWrapper = new QueryWrapper<>();
-		queryWrapper.eq("is_deleted",0);
-		queryWrapper.eq("tenant_id",AuthUtil.getTenantId());
-		queryWrapper.apply(ObjectUtils.isNotNull(corpType),"find_in_set(corp_type,'"+corpType+"')");
-		if (!"234557".equals(AuthUtil.getTenantId())){
+		queryWrapper.eq("is_deleted", 0);
+		queryWrapper.eq("tenant_id", AuthUtil.getTenantId());
+		queryWrapper.apply(ObjectUtils.isNotNull(corpType), "find_in_set(corp_type,'" + corpType + "')");
+		if (!"234557".equals(AuthUtil.getTenantId())) {
 			queryWrapper.orderByAsc("cname");
 		}
 		List<CorpsDesc> pages = corpsDescService.list(queryWrapper);
@@ -851,7 +851,7 @@ public class CorpsDescController extends BladeController {
 	@ApiOperationSupport(order = 11)
 	@ApiOperation(value = "所有客户信息", notes = "获得客户信息")
 	public R<List<CorpsDesc>> oceanCorpsList(CorpsDescVO corpsDesc) {
-		if (ObjectUtils.isNotNull(corpsDesc.getCorpsTypeName())){
+		if (ObjectUtils.isNotNull(corpsDesc.getCorpsTypeName())) {
 			LambdaQueryWrapper<CorpsType> corpsTypeLambdaQueryWrapper = new LambdaQueryWrapper<>();
 			corpsTypeLambdaQueryWrapper.eq(CorpsType::getIsDeleted, 0);
 			corpsTypeLambdaQueryWrapper.eq(CorpsType::getTenantId, SecureUtil.getTenantId());
@@ -871,7 +871,7 @@ public class CorpsDescController extends BladeController {
 				List<CorpsTypeDesc> list = corpsTypeDescService.list(typeDescLambdaQueryWrapper);
 				if (CollectionUtils.isNotEmpty(list)) {
 					corpsDesc.setTypeList(list.stream().filter(e -> e.getCorpId() != null).map(CorpsTypeDesc::getCorpId).collect(Collectors.toList()));
-				}else{
+				} else {
 					return R.data(new ArrayList<>());
 				}
 				lambdaQueryWrapper.in(CollectionUtils.isNotEmpty(corpsDesc.getTypeList()), CorpsDesc::getId, corpsDesc.getTypeList());
@@ -880,7 +880,7 @@ public class CorpsDescController extends BladeController {
 			} else {
 				return R.data(new ArrayList<>());
 			}
-		}else{
+		} else {
 			return R.data(new ArrayList<>());
 		}
 	}
@@ -893,10 +893,40 @@ public class CorpsDescController extends BladeController {
 	@ApiOperation(value = "根据类别查所属公司", notes = "传入corpsDesc")
 	public R<List<CorpsDesc>> getCorpsType(CorpsDesc corpsDesc) {
 		LambdaQueryWrapper<CorpsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(CorpsDesc::getIsDeleted,0);
-		lambdaQueryWrapper.eq(CorpsDesc::getCorpType,corpsDesc.getCorpType());
-		lambdaQueryWrapper.eq(CorpsDesc::getTenantId,SecureUtil.getTenantId());
+		lambdaQueryWrapper.eq(CorpsDesc::getIsDeleted, 0);
+		lambdaQueryWrapper.eq(CorpsDesc::getCorpType, corpsDesc.getCorpType());
+		lambdaQueryWrapper.eq(CorpsDesc::getTenantId, SecureUtil.getTenantId());
 		return R.data(corpsDescService.list(lambdaQueryWrapper));
 	}
 
+	/**
+	 * 根据用户id查询客户详情
+	 */
+	@GetMapping("/selectCorpsDetails")
+	@ApiOperationSupport(order = 11)
+	@ApiOperation(value = "查询船公司", notes = "传入corpsDesc")
+	public R<CorpsDesc> selectCorpsDetails() {
+		if (AuthUtil.getUserRole().equals("客户")) {
+			CorpsAttn corpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<CorpsAttn>()
+				.eq(CorpsAttn::getUserId, AuthUtil.getUserId())
+				.eq(CorpsAttn::getIsDeleted, 0)
+				.eq(CorpsAttn::getTenantId, AuthUtil.getTenantId())
+			);
+			if (ObjectUtils.isNull(corpsAttn)) {
+				throw new RuntimeException("未查到用户信息");
+			} else {
+				CorpsDesc detsils = corpsDescService.getCorpId(corpsAttn.getPid());
+				if (ObjectUtils.isNull(detsils)) {
+					throw new RuntimeException("未查到用户信息");
+				} else {
+					detsils.setCorpsAddrList(corpsAddrService.list(new LambdaQueryWrapper<CorpsAddr>().eq(CorpsAddr::getIsDeleted, 0)
+						.eq(CorpsAddr::getTenantId, AuthUtil.getTenantId())
+						.eq(CorpsAddr::getPid, detsils.getId())));
+					return R.data(detsils);
+				}
+			}
+		}
+		return R.data(new CorpsDesc());
+	}
+
 }

+ 6 - 2
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -1145,15 +1145,19 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 			sendMessage.setToUserName(selectOrder.getCreateUserName());
 			if (1 == delivery.getDocumentaryStatusType()){
 				sendMessage.setMessageBody("您的销售订单" + selectOrder.getSysNo() + "已报关,请查看");
+				selectOrder.setDocumentaryStatus("已报关");
+				selectOrder.setDocumentaryDate(delivery.getCustomsDate());
 			} else if (2 == delivery.getDocumentaryStatusType()) {
 				sendMessage.setMessageBody("您的销售订单" + selectOrder.getSysNo() + "已出运,请查看");
+				selectOrder.setDocumentaryStatus("已出运");
+				selectOrder.setDocumentaryDate(delivery.getShippingDate());
 			} else if (3 == delivery.getDocumentaryStatusType()) {
 				sendMessage.setMessageBody("您的销售订单" + selectOrder.getSysNo() + "已完成,请查看");
 				selectOrder.setDocumentaryStatus("已完成");
 				selectOrder.setDocumentaryDate(delivery.getDocumentaryDate());
-				selectOrder.setBillLadingNo(detail.getBillLadingNo());
-				orderDescClient.updateOrder(selectOrder);
 			}
+			selectOrder.setBillLadingNo(detail.getBillLadingNo());
+			orderDescClient.updateOrder(selectOrder);
 			R save = messageClient.save(sendMessage);
 			if (!save.isSuccess()) {
 				throw new SecurityException("发送消息失败");

+ 48 - 0
blade-service/blade-pay/pom.xml

@@ -53,6 +53,54 @@
             <version>2.8.2.RELEASE</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>org.jetbrains</groupId>
+            <artifactId>annotations</artifactId>
+            <version>RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jetbrains</groupId>
+            <artifactId>annotations</artifactId>
+            <version>RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jetbrains</groupId>
+            <artifactId>annotations</artifactId>
+            <version>RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jetbrains</groupId>
+            <artifactId>annotations</artifactId>
+            <version>RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jetbrains</groupId>
+            <artifactId>annotations</artifactId>
+            <version>RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jetbrains</groupId>
+            <artifactId>annotations</artifactId>
+            <version>RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jetbrains</groupId>
+            <artifactId>annotations</artifactId>
+            <version>RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jetbrains</groupId>
+            <artifactId>annotations</artifactId>
+            <version>RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
 

+ 133 - 35
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/TongLianPaymentController.java

@@ -1,31 +1,19 @@
-/*
- *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions are met:
- *
- *  Redistributions of source code must retain the above copyright notice,
- *  this list of conditions and the following disclaimer.
- *  Redistributions in binary form must reproduce the above copyright
- *  notice, this list of conditions and the following disclaimer in the
- *  documentation and/or other materials provided with the distribution.
- *  Neither the name of the dreamlu.net developer nor the names of its
- *  contributors may be used to endorse or promote products derived from
- *  this software without specific prior written permission.
- *  Author: Chill 庄骞 (smallchill@163.com)
- */
 package org.springblade.pay.tonglianPayment.controller;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.jetbrains.annotations.NotNull;
 import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.entity.FeesDesc;
 import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.client.feign.IFeesDescClient;
+import org.springblade.client.feign.ISerialClient;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.finance.dto.ApplyDTO;
 import org.springblade.finance.feign.IFinanceClient;
 import org.springblade.finance.vojo.Settlement;
@@ -35,7 +23,12 @@ import org.springblade.pay.tonglianPayment.utils.AnalysisMapUtils;
 import org.springblade.pay.tonglianPayment.utils.SybConstants;
 import org.springblade.pay.tonglianPayment.utils.SybUtil;
 import org.springblade.purchase.sales.entity.Order;
+import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.feign.IOrderDescClient;
+import org.springblade.purchase.sales.feign.IOrderItemsClient;
+import org.springblade.stock.feign.IStockGoodsClient;
+import org.springblade.stock.vo.StockGoodsVO;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -45,10 +38,9 @@ import springfox.documentation.annotations.ApiIgnore;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.TreeMap;
+import java.math.MathContext;
+import java.math.RoundingMode;
+import java.util.*;
 
 /**
  * 通联支付 控制器
@@ -62,15 +54,25 @@ import java.util.TreeMap;
 @Api(value = "通联支付", tags = "微信支付")
 public class TongLianPaymentController extends BladeController {
 
-	private final IOrderDescClient orderDescClient;
+	private final @NotNull IOrderDescClient orderDescClient;
+
+	private final @NotNull IPaymentService paymentService;
 
-	private final IPaymentService paymentService;
+	private final @NotNull ICorpsDescClient corpsDescClient;
 
-	private ICorpsDescClient corpsDescClient;
+	private final @NotNull IFeesDescClient feesDescClient;//费用
 
-	private final IFeesDescClient feesDescClient;//费用
+	private final @NotNull IFinanceClient financeClient;//财务
+
+	/**
+	 * 生成系统编号
+	 */
+	private final @NotNull ISerialClient serialClient;
 
-	private final IFinanceClient financeClient;//财务
+	private final @NotNull IStockGoodsClient stockGoodsClient;
+
+
+	private final @NotNull IOrderItemsClient orderItemsClient;
 
 
 	/**
@@ -78,7 +80,7 @@ public class TongLianPaymentController extends BladeController {
 	 */
 	@ApiOperation(value = "获取支付的请求参数")
 	@PostMapping("/prepay")
-	public R payPrepay(Long orderId) {
+	public @NotNull R payPrepay(Long orderId) {
 		Order order = orderDescClient.getById(orderId);
 		return R.data(paymentService.getWeChatPayment(order));
 	}
@@ -86,28 +88,27 @@ public class TongLianPaymentController extends BladeController {
 	/**
 	 * 微信订单回调接口
 	 *
-	 * @return
 	 */
 	@ApiIgnore
 	@RequestMapping(value = "/notify", method = RequestMethod.POST, produces = "text/html;charset=UTF-8")
-	public void notify(HttpServletRequest request, HttpServletResponse response) {
+	public void notify(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response) {
 		try {
 			request.setCharacterEncoding("UTF-8");//通知传输的编码为GBK
 			response.setCharacterEncoding("UTF-8");
 			TreeMap<String, String> params = NotifyServlet.getParams(request);
-			String appkey = "";
+			String appKey;
 			if ("RSA".equals(params.get("signtype")))
-				appkey = SybConstants.SYB_RSATLPUBKEY;
+				appKey = SybConstants.SYB_RSATLPUBKEY;
 			else if ("SM2".equals(params.get("signtype")))
-				appkey = SybConstants.SYB_SM2TLPUBKEY;
+				appKey = SybConstants.SYB_SM2TLPUBKEY;
 			else
-				appkey = SybConstants.SYB_MD5_APPKEY;
+				appKey = SybConstants.SYB_MD5_APPKEY;
 //			}
-			boolean isSign = SybUtil.validSign(params, appkey, params.get("signtype"));// 接受到推送通知,首先验签
+			boolean isSign = SybUtil.validSign(params, appKey, params.get("signtype"));// 接受到推送通知,首先验签
 			System.out.println("验签结果:" + isSign);
 			if (isSign) {
 				String trxstatus = AnalysisMapUtils.getString("trxstatus", params);
-				if (trxstatus.equals("0000")) {
+				if (Objects.equals(trxstatus, "0000")) {
 					//支付成功业务处理
 					Order order = new Order();
 					order.setSysNo(AnalysisMapUtils.getString("cusorderid", params));
@@ -212,15 +213,112 @@ public class TongLianPaymentController extends BladeController {
 								selectOrder.setSettlmentAmount(receivedAmount);
 								selectOrder.setBalanceAmount(amount);
 								orderDescClient.updateOrder(selectOrder);
+							} else {
+								System.out.println(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,修改单据已收账款失败");
 							}
 							//生成账单
 							R paymentApply = financeClient.paymentApplyParts(applyDTO);
 							if (!paymentApply.isSuccess()) {
-								throw new RuntimeException(paymentApply.getMsg());
+								System.out.println(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,账单结算失败!原因:" + paymentApply.getMsg());
 							}
 						} else {
+							System.out.println(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到收款信息,账单结算失败!");
+						}
+
+						R<List<OrderItems>> res = orderItemsClient.selectList(selectOrder.getId());
+
+						Order orderNew = new Order();
+						BeanUtil.copyProperties(selectOrder, orderNew);
+						// 订单时间
+						orderNew.setSrcId(selectOrder.getId());
+						orderNew.setSrcSysNo(selectOrder.getSysNo());
+						orderNew.setStatus(2);
+						orderNew.setBusinesDate(new Date());
+						if ("XS".equals(orderNew.getBillType())) {
+							orderNew.setBillType("XSFH");
+						} else {
+							orderNew.setBillType("CGFH");
+						}
+						orderNew.setTradeType("YPJ");
+						orderNew.setId(null);
+						orderNew.setCreateTime(new Date());
+						orderNew.setUpdateTime(null);
+						orderNew.setUpdateUser(null);
+						orderNew.setUpdateUserName(null);
 
+						// 保存订单主表信息
+						// 获取系统编号
+						R billNo = serialClient.getBillNo(orderNew.getBillType(), orderNew.getTradeType(), orderNew.getBillType());
+						if (billNo.getCode() != 200) {
+							TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+							System.out.println(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,生成发货订单编号失败1");
+						}
+						orderNew.setSysNo((String) billNo.getData());
+						R clientBillNo = serialClient.getBillNo(orderNew.getBillType(), orderNew.getTradeType(), orderNew.getBillType());
+						if (!clientBillNo.isSuccess()) {
+							TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+							System.out.println(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,生成发货订单编号失败2");
+						}
+						if (ObjectUtils.isNotNull(orderNew.getCorpId())) {
+							CorpsDesc corpsDesc = corpsDescClient.getCorpId(orderNew.getCorpId());
+							if (ObjectUtils.isNotNull(corpsDesc)) {
+								if (ObjectUtils.isNotNull(corpsDesc.getCorpsAddrList()) && corpsDesc.getCorpsAddrList().size() > 0) {
+									orderNew.setArrivalAddress(corpsDesc.getCorpsAddrList().get(0).getDetailedAddress());
+								}
+							}
+						}
+						orderNew.setOrderNo((String) clientBillNo.getData());
+						orderDescClient.save(orderNew);
+
+						// 保存订单明细
+						if (CollectionUtils.isNotEmpty(res.getData())) {
+							for (OrderItems orderItems : res.getData()) {
+								BigDecimal stockPrice = new BigDecimal("0.00");
+								BigDecimal surplusRouteQuantity = new BigDecimal("0.00");
+								BigDecimal balanceQuantity = new BigDecimal("0.00");
+								BigDecimal balanceAmount = new BigDecimal("0.00");
+								//获取本商品库存
+								R<StockGoodsVO> r = stockGoodsClient.selectStockParts(null, orderItems.getStorageId(), orderItems.getItemId(), null, null, null, null, null, null);
+								if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+									if ("XS".equals(selectOrder.getBillType())) {
+										surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().subtract(orderItems.getStorageInQuantity()));
+										balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
+										balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPurchaseCost(), MathContext.DECIMAL32));
+										stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+
+										r.getData().setOutQuantity(r.getData().getOutQuantity().add(orderItems.getStorageInQuantity()));
+										r.getData().setOutAmount(r.getData().getOutAmount());
+									} else {
+										surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().add(orderItems.getStorageInQuantity()));
+										balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
+										balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+										stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+
+										r.getData().setInQuantity(r.getData().getInQuantity().add(orderItems.getStorageInQuantity()));
+										r.getData().setInAmount(r.getData().getInAmount().add(orderItems.getAmount()));
+									}
+									r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
+									r.getData().setBalanceQuantity(balanceQuantity);
+									r.getData().setBalanceAmount(balanceAmount);
+									r.getData().setStockPrice(stockPrice);
+									stockGoodsClient.updateStock(r.getData());
+								} else {
+									System.out.println(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到库存信息,修改库存数据失败");
+								}
+								orderItems.setId(null);
+								orderItems.setPid(orderNew.getId());
+								orderItems.setCreateTime(new Date());
+								orderItems.setUpdateTime(null);
+								orderItems.setUpdateUser(null);
+								orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+								orderItems.setPurchaseCost(orderItems.getPurchaseCost());
+								orderItemsClient.submit(orderItems);
+							}
+						} else {
+							System.out.println(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到单据明细信息");
 						}
+					} else {
+						System.out.println(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到单据信息,账单结算失败!");
 					}
 					System.out.println("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付成功");
 					response.getWriter().write(AnalysisMapUtils.setXML("SUCCESS", "OK"));

+ 2 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/export/ExportOrderController.java

@@ -1326,6 +1326,8 @@ public class ExportOrderController extends BladeController {
 					orderItems_.setCode(goodsDesc.getCode());
 				}
 			}
+			orderItems_.setPrice(orderItems_.getPurchasePrice());
+			orderItems_.setAmount(orderItems_.getPurchaseAmount());
 		}
 		return R.data(pages);
 	}

+ 5 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java

@@ -405,5 +405,10 @@ public class OrderDescClient implements IOrderDescClient {
 		return iOrderService.getByOrderQuantity(year, month, corpId);
 	}
 
+	@Override
+	public boolean save(Order orderNew) {
+		return iOrderService.save(orderNew);
+	}
+
 
 }

+ 34 - 2
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderItemsClient.java

@@ -1,21 +1,27 @@
 package org.springblade.purchase.sales.feign;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.deliver.goods.enums.DeliveryEnum;
 import org.springblade.purchase.sales.entity.OrderItems;
+import org.springblade.purchase.sales.mapper.OrderPartsMapper;
 import org.springblade.purchase.sales.service.IOrderItemsService;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -32,6 +38,13 @@ public class OrderItemsClient implements IOrderItemsClient {
 	private IOrderItemsService orderItemsService;
 
 	/**
+	 * 获取客户信息
+	 */
+	private final ICorpsDescClient corpsDescClient;
+
+	private final OrderPartsMapper orderPartsMapper;
+
+	/**
 	 * 修改订单明细发货数量
 	 *
 	 * @param orderItemsId   订单明细id
@@ -116,7 +129,27 @@ public class OrderItemsClient implements IOrderItemsClient {
 
 	@Override
 	public R submit(OrderItems orderItems) {
-		return R.status(orderItemsService.saveOrUpdate(orderItems));
+		boolean rest = orderItemsService.saveOrUpdate(orderItems);
+		//保存配件明细信息
+		if (CollectionUtils.isNotEmpty(orderItems.getPartsList())) {
+			orderItems.getPartsList().forEach(parts -> {
+				if (parts.getId() == null) {
+					parts.setTenantId(SecureUtil.getTenantId());
+					parts.setCreateTime(new Date());
+					parts.setCreateUser(SecureUtil.getUserId());
+					parts.setPid(orderItems.getId());
+					parts.setSrcPid(orderItems.getPid());
+					orderPartsMapper.insert(parts);
+				} else {
+					parts.setUpdateTime(new Date());
+					parts.setUpdateUser(SecureUtil.getUserId());
+					parts.setPid(orderItems.getId());
+					parts.setSrcPid(orderItems.getPid());
+					orderPartsMapper.updateById(parts);
+				}
+			});
+		}
+		return R.status(rest);
 	}
 
 	@Override
@@ -159,5 +192,4 @@ public class OrderItemsClient implements IOrderItemsClient {
 		lambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getTenantId, AuthUtil.getTenantId()).eq(OrderItems::getPid, orderId);
 		return R.data(orderItemsService.list(lambdaQueryWrapper));
 	}
-
 }

+ 59 - 98
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/partsapp/AppPartsController.java

@@ -1,19 +1,3 @@
-/*
- *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions are met:
- *
- *  Redistributions of source code must retain the above copyright notice,
- *  this list of conditions and the following disclaimer.
- *  Redistributions in binary form must reproduce the above copyright
- *  notice, this list of conditions and the following disclaimer in the
- *  documentation and/or other materials provided with the distribution.
- *  Neither the name of the dreamlu.net developer nor the names of its
- *  contributors may be used to endorse or promote products derived from
- *  this software without specific prior written permission.
- *  Author: Chill 庄骞 (smallchill@163.com)
- */
 package org.springblade.purchase.sales.partsapp;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -76,7 +60,7 @@ public class AppPartsController extends BladeController {
 	private final IOrderItemsService orderItemsService;
 	private final ICorpsDescClient corpsDescClient;//获取客户信息
 	private final IUserClient userClient;//获取用户信息
-	private IStorageClient iStorageClient;//库区信息
+	private final IStorageClient iStorageClient;//库区信息
 	private final IFinanceClient financeClient;
 	/**
 	 * 库区信息
@@ -85,9 +69,6 @@ public class AppPartsController extends BladeController {
 
 	/**
 	 * 获得app首页营业收入和采购支出(配件系统)
-	 *
-	 * @param tenantId
-	 * @return
 	 */
 	@GetMapping("/revenueExpenditure")
 	@ApiOperation(value = "营业收入和采购支出", notes = "传入order")
@@ -156,13 +137,13 @@ public class AppPartsController extends BladeController {
 		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getCreateUser()), Order::getCreateUser, order.getCreateUser());//制单人
 		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getOrderStartDate()), Order::getBusinesDate, order.getOrderStartDate());//订单日期开始
 		lambdaQueryWrapper.le(Func.isNotEmpty(order.getOrderEndDate()), Order::getBusinesDate, order.getOrderEndDate());//订单日期结束
-		lambdaQueryWrapper.apply(Func.isNotEmpty(order.getBillType()),"find_in_set(bill_type,'" + order.getBillType() + "')");
+		lambdaQueryWrapper.apply(Func.isNotEmpty(order.getBillType()), "find_in_set(bill_type,'" + order.getBillType() + "')");
 		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getTradeType()), Order::getTradeType, order.getTradeType());
 		if ("1".equals(order.getModular())) {
 			lambdaQueryWrapper.apply("balance_amount > 0");
 		}
-		if (AuthUtil.getUserRole().contains("销售") || AuthUtil.getUserRole().contains("业务员")){
-			lambdaQueryWrapper.eq(Order::getCreateUser,AuthUtil.getUserId());
+		if (AuthUtil.getUserRole().contains("销售") || AuthUtil.getUserRole().contains("业务员")) {
+			lambdaQueryWrapper.eq(Order::getCreateUser, AuthUtil.getUserId());
 		}
 		if ("0".equals(order.getSort())) {
 			if ("1".equals(order.getTypeSort())) {
@@ -189,41 +170,41 @@ public class AppPartsController extends BladeController {
 				lambdaQueryWrapper.orderByDesc(Order::getConfirmStatus);
 			}
 		} else {
-			if ("234557".equals(AuthUtil.getTenantId())){
+			if ("234557".equals(AuthUtil.getTenantId())) {
 				lambdaQueryWrapper.orderByAsc(Order::getStatus);
-			}else{
+			} else {
 				lambdaQueryWrapper.orderByAsc(Order::getBusinesDate);
 			}
 		}
 		IPage<Order> page = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
 
-		String corpIds = "";//客户拼接
-		String belongToCorpIds = "";//销售公司
-		String storageIds = "";//仓库
-		String salesNames = "";//业务员
+		StringBuilder corpIds = new StringBuilder();//客户拼接
+		StringBuilder belongToCorpIds = new StringBuilder();//销售公司
+		StringBuilder storageIds = new StringBuilder();//仓库
+		StringBuilder salesNames = new StringBuilder();//业务员
 
 		for (Order orders : page.getRecords()) {
 			if (ObjectUtil.isNotEmpty(orders.getCorpId())) {
-				corpIds = corpIds + orders.getCorpId() + ",";
+				corpIds.append(orders.getCorpId()).append(",");
 			}
 			if (ObjectUtil.isNotEmpty(orders.getCorpId())) {
-				belongToCorpIds = belongToCorpIds + orders.getBelongToCorpId() + ",";
+				belongToCorpIds.append(orders.getBelongToCorpId()).append(",");
 			}
 			if (ObjectUtil.isNotEmpty(orders.getStorageId())) {
-				storageIds = storageIds + orders.getStorageId() + ",";
+				storageIds.append(orders.getStorageId()).append(",");
 			}
 			if (ObjectUtil.isNotEmpty(orders.getSalesName())) {
-				salesNames = salesNames + orders.getSalesName() + ",";
+				salesNames.append(orders.getSalesName()).append(",");
 			}
 		}
 
-		List<CorpsDesc> corpsDescList = corpsDescClient.selectByCorpIds(corpIds);
-		List<CorpsDesc> belongToCorpList = corpsDescClient.selectByCorpIds(belongToCorpIds);
-		List<StorageDesc> storageList = iStorageClient.selectStorageIds(storageIds);
-		List<User> users = userClient.selectUserIds(salesNames);
+		List<CorpsDesc> corpsDescList = corpsDescClient.selectByCorpIds(corpIds.toString());
+		List<CorpsDesc> belongToCorpList = corpsDescClient.selectByCorpIds(belongToCorpIds.toString());
+		List<StorageDesc> storageList = iStorageClient.selectStorageIds(storageIds.toString());
+		List<User> users = userClient.selectUserIds(salesNames.toString());
 
 		if (CollectionUtils.isNotEmpty(page.getRecords())) {
-			page.getRecords().stream().forEach(item -> {
+			page.getRecords().forEach(item -> {
 				if (item.getBalanceAmount().equals(new BigDecimal(0))) {
 					item.setCollection("已收款");
 				} else {
@@ -231,27 +212,18 @@ public class AppPartsController extends BladeController {
 				}
 				if (item.getCorpId() != null) {
 					if (ObjectUtil.isNotEmpty(corpsDescList)) {
-						CorpsDesc corpsDesc = corpsDescList.stream().filter(d -> d.getId().equals(item.getCorpId())).findFirst().orElse(null);
-						if (ObjectUtils.isNotNull(corpsDesc)) {
-							item.setCorpsName(corpsDesc.getCname());
-						}
+						corpsDescList.stream().filter(d -> d.getId().equals(item.getCorpId())).findFirst().ifPresent(corpsDesc -> item.setCorpsName(corpsDesc.getCname()));
 					}
 				}
 				if (item.getBelongToCorpId() != null) {
 					if (ObjectUtil.isNotEmpty(belongToCorpList)) {
-						CorpsDesc corpsDesc = belongToCorpList.stream().filter(d -> d.getId().equals(item.getBelongToCorpId())).findFirst().orElse(null);
-						if (ObjectUtils.isNotNull(corpsDesc)) {
-							item.setBelongToCorpName(corpsDesc.getCname());
-						}
+						belongToCorpList.stream().filter(d -> d.getId().equals(item.getBelongToCorpId())).findFirst().ifPresent(corpsDesc -> item.setBelongToCorpName(corpsDesc.getCname()));
 					}
 				}
 				//仓库信息
 				if (item.getStorageId() != null) {
 					if (ObjectUtil.isNotEmpty(storageList)) {
-						StorageDesc storageDesc = storageList.stream().filter(d -> d.getId().equals(item.getStorageId())).findFirst().orElse(null);
-						if (ObjectUtils.isNotNull(storageDesc)) {
-							item.setStorageName(storageDesc.getCname());
-						}
+						storageList.stream().filter(d -> d.getId().equals(item.getStorageId())).findFirst().ifPresent(storageDesc -> item.setStorageName(storageDesc.getCname()));
 					}
 				}
 				Acc acc = financeClient.selectBySrcId(item.getId());
@@ -261,10 +233,7 @@ public class AppPartsController extends BladeController {
 				//业务员信息
 				if (ObjectUtils.isNotNull(item.getSalesName())) {
 					if (ObjectUtil.isNotEmpty(users)) {
-						User user = users.stream().filter(d -> d.getId().equals(Long.parseLong(item.getSalesName()))).findFirst().orElse(null);
-						if (ObjectUtils.isNotNull(user)) {
-							item.setSales(user.getRealName());
-						}
+						users.stream().filter(d -> d.getId().equals(Long.parseLong(item.getSalesName()))).findFirst().ifPresent(user -> item.setSales(user.getRealName()));
 					}
 				}
 			});
@@ -357,15 +326,15 @@ public class AppPartsController extends BladeController {
 		lambdaQueryWrapper.eq(Order::getTradeType, OrderTypeEnum.PARTS.getType());
 		lambdaQueryWrapper.eq(Order::getConfirmStatus, 1);
 		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(order.getSalesName()), Order::getSalesName, order.getSalesName());//业务员
-		if (AuthUtil.getUserRole().contains("销售") || AuthUtil.getUserRole().contains("业务员")){
-			lambdaQueryWrapper.eq(Order::getCreateUser,AuthUtil.getUserId());
+		if (AuthUtil.getUserRole().contains("销售") || AuthUtil.getUserRole().contains("业务员")) {
+			lambdaQueryWrapper.eq(Order::getCreateUser, AuthUtil.getUserId());
 		}
 		List<Order> orderList = orderService.list(lambdaQueryWrapper);
 
-		BigDecimal total = new BigDecimal("0.00");
-		BigDecimal month = new BigDecimal("0.00");
-		BigDecimal lastMonth = new BigDecimal("0.00");
-		BigDecimal flowAmount = new BigDecimal("0.00");
+		BigDecimal total;
+		BigDecimal month;
+		BigDecimal lastMonth;
+		BigDecimal flowAmount;
 		total = orderList.stream().map(Order::getBalanceAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 		order.setTenantId(AuthUtil.getTenantId());
 		order.setTime("1");
@@ -396,7 +365,6 @@ public class AppPartsController extends BladeController {
 	}
 
 
-
 	/**
 	 * 自定义分页 销售或采购订单表
 	 */
@@ -408,19 +376,19 @@ public class AppPartsController extends BladeController {
 		order.setConfirmStatus(1);
 		IPage<Order> page = orderService.selectPageByCorp(Condition.getPage(query), order);
 
-		String corpIds = "";//客户拼接
+		StringBuilder corpIds = new StringBuilder();//客户拼接
 		for (Order orders : page.getRecords()) {
 			if (ObjectUtil.isNotEmpty(orders.getCorpId())) {
-				corpIds = corpIds + orders.getCorpId() + ",";
+				corpIds.append(orders.getCorpId()).append(",");
 			}
 		}
-		List<CorpsDesc> corpsDescList = corpsDescClient.selectByCorpIds(corpIds);
+		List<CorpsDesc> corpsDescList = corpsDescClient.selectByCorpIds(corpIds.toString());
 		if (CollectionUtils.isNotEmpty(page.getRecords())) {
-			page.getRecords().stream().forEach(item -> {
+			page.getRecords().forEach(item -> {
 				if (item.getCorpId() != null) {
 					if (ObjectUtil.isNotEmpty(corpsDescList)) {
 						CorpsDesc corpsDesc = corpsDescList.stream().filter(d -> d.getId().equals(item.getCorpId())).findFirst().orElse(null);
-						if (ObjectUtils.isNotNull(corpsDesc)) {
+						if (corpsDesc != null) {
 							item.setCorpsName(corpsDesc.getCname());
 							item.setTel(corpsDesc.getTel());
 						}
@@ -434,13 +402,10 @@ public class AppPartsController extends BladeController {
 
 	/**
 	 * app营业分析
-	 *
-	 * @return
 	 */
 	@GetMapping("/turnoverAnalysis")
 	@ApiOperation(value = "app营业分析", notes = "传入参数")
-	public R<Map<String, Object>> turnoverAnalysis(@RequestParam(value = "type", required = false) String type,
-												   @RequestParam(value = "statusDate", required = false) String statusDate,
+	public R<Map<String, Object>> turnoverAnalysis(@RequestParam(value = "statusDate", required = false) String statusDate,
 												   @RequestParam(value = "endDate", required = false) String endDate) {
 		Map<String, Object> map = new HashMap<>();
 		//销售
@@ -505,26 +470,23 @@ public class AppPartsController extends BladeController {
 			lambdaQueryWrapper.ge(Order::getBusinesDate, order.getBusinesDateList().get(0));
 			lambdaQueryWrapper.le(Order::getBusinesDate, order.getBusinesDateList().get(1));
 		}
-		lambdaQueryWrapper.eq( Order::getBillType, "XS");
-		lambdaQueryWrapper.eq( Order::getTradeType, "YPJ");
+		lambdaQueryWrapper.eq(Order::getBillType, "XS");
+		lambdaQueryWrapper.eq(Order::getTradeType, "YPJ");
 		IPage<Order> page = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
 
-		String corpIds = "";//客户拼接
+		StringBuilder corpIds = new StringBuilder();//客户拼接
 
 		for (Order orders : page.getRecords()) {
 			if (ObjectUtil.isNotEmpty(orders.getCorpId())) {
-				corpIds = corpIds + orders.getCorpId() + ",";
+				corpIds.append(orders.getCorpId()).append(",");
 			}
 		}
-		List<CorpsDesc> corpsDescList = corpsDescClient.selectByCorpIds(corpIds);
+		List<CorpsDesc> corpsDescList = corpsDescClient.selectByCorpIds(corpIds.toString());
 		if (CollectionUtils.isNotEmpty(page.getRecords())) {
-			page.getRecords().stream().forEach(item -> {
+			page.getRecords().forEach(item -> {
 				if (item.getCorpId() != null) {
 					if (ObjectUtil.isNotEmpty(corpsDescList)) {
-						CorpsDesc corpsDesc = corpsDescList.stream().filter(d -> d.getId().equals(item.getCorpId())).findFirst().orElse(null);
-						if (ObjectUtils.isNotNull(corpsDesc)) {
-							item.setCorpsName(corpsDesc.getCname());
-						}
+						corpsDescList.stream().filter(d -> d.getId().equals(item.getCorpId())).findFirst().ifPresent(corpsDesc -> item.setCorpsName(corpsDesc.getCname()));
 					}
 				}
 			});
@@ -562,22 +524,19 @@ public class AppPartsController extends BladeController {
 		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getTradeType()), Order::getTradeType, order.getTradeType());
 		List<Order> list = orderService.list(lambdaQueryWrapper);
 
-		String corpIds = "";//客户拼接
+		StringBuilder corpIds = new StringBuilder();//客户拼接
 
 		for (Order orders : list) {
 			if (ObjectUtil.isNotEmpty(orders.getCorpId())) {
-				corpIds = corpIds + orders.getCorpId() + ",";
+				corpIds.append(orders.getCorpId()).append(",");
 			}
 		}
-		List<CorpsDesc> corpsDescList = corpsDescClient.selectByCorpIds(corpIds);
+		List<CorpsDesc> corpsDescList = corpsDescClient.selectByCorpIds(corpIds.toString());
 		if (CollectionUtils.isNotEmpty(list)) {
-			list.stream().forEach(item -> {
+			list.forEach(item -> {
 				if (item.getCorpId() != null) {
 					if (ObjectUtil.isNotEmpty(corpsDescList)) {
-						CorpsDesc corpsDesc = corpsDescList.stream().filter(d -> d.getId().equals(item.getCorpId())).findFirst().orElse(null);
-						if (ObjectUtils.isNotNull(corpsDesc)) {
-							item.setCorpsName(corpsDesc.getCname());
-						}
+						corpsDescList.stream().filter(d -> d.getId().equals(item.getCorpId())).findFirst().ifPresent(corpsDesc -> item.setCorpsName(corpsDesc.getCname()));
 					}
 				}
 			});
@@ -598,21 +557,15 @@ public class AppPartsController extends BladeController {
 
 	/**
 	 * 获得小程序个人信息(配件系统)
-	 *
-	 * @param tenantId
-	 * @return
 	 */
 	@GetMapping("/personalInformation")
 	@ApiOperation(value = "获得小程序个人信息", notes = "传入order")
-	public R personalInformation(@RequestParam(value = "tenantId",required = false) String tenantId) {
+	public R personalInformation(@RequestParam(value = "tenantId", required = false) String tenantId) {
 		return orderService.personalInformation(tenantId);
 	}
 
 	/**
 	 * 确认发货,收货(配件系统)
-	 *
-	 * @param order
-	 * @return
 	 */
 	@PostMapping("/collectHairGoods")
 	@ApiOperation(value = "获得小程序个人信息", notes = "传入order")
@@ -622,9 +575,6 @@ public class AppPartsController extends BladeController {
 
 	/**
 	 * 抵消(配件系统-中电)
-	 *
-	 * @param order
-	 * @return
 	 */
 	@PostMapping("/offset")
 	@ApiOperation(value = "获得小程序个人信息", notes = "传入order")
@@ -654,6 +604,17 @@ public class AppPartsController extends BladeController {
 	}
 
 	/**
+	 * 新增或修改 经销商销售或采购订单表(微信小程序)
+	 */
+	@PostMapping("/quickBillingWX")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入order")
+	public R quickBillingWX(@Valid @RequestBody Order order) {
+		order.setTradeType(OrderTypeEnum.PARTS.getType());
+		return orderService.quickBillingWX(order);
+	}
+
+	/**
 	 * 收付款(单)
 	 */
 	@PostMapping("/collectPayment")

+ 2 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java

@@ -505,4 +505,6 @@ public interface IOrderService extends IService<Order> {
     R purchaseStatusUpdate(Order order);
 
     R documentQuantityStatistics(Order order);
+
+	R quickBillingWX(Order order);
 }

+ 599 - 39
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -2825,7 +2825,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		}
 		Date date = new Date();
 		if (!"线上".equals(order.getOrderSource())) {
-
 			if ("234557".equals(AuthUtil.getTenantId())) {
 				if ("XSJH".equals(order.getBillType())) {
 					// 保存订单主表信息
@@ -4360,7 +4359,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 			pathsActs = iCheckClient.getActsByActId(1105, "status");
 			//获取审批信息
-			auditPathsLevels = iCheckClient.listLevelsByActId(1105,"status");
+			auditPathsLevels = iCheckClient.listLevelsByActId(1105, "status");
 
 			auditProecessDTO.setProcessType("财务退款审批");
 			/* 洗箱审批流程  */
@@ -4718,40 +4717,29 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				if (ObjectUtils.isNull(billOrder)) {
 					throw new RuntimeException("未找到订单单据信息");
 				}
-				if ("234557".equals(AuthUtil.getTenantId())){
-					LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
-					orderLambdaQueryWrapper.eq(Order::getSrcId, billOrder.getId())
-						.eq(Order::getIsDeleted, 0)
-						.eq(Order::getTenantId, AuthUtil.getTenantId());
-					selectOrder = baseMapper.selectOne(orderLambdaQueryWrapper);
-					if (ObjectUtils.isNull(selectOrder)) {
-						throw new RuntimeException("未找到发货单据信息");
-					}
-					selectOrder.setStatus(4);
+				LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
+				orderLambdaQueryWrapper.eq(Order::getSrcId, billOrder.getId())
+					.eq(Order::getIsDeleted, 0)
+					.eq(Order::getTenantId, AuthUtil.getTenantId());
+				selectOrder = baseMapper.selectOne(orderLambdaQueryWrapper);
+				if (ObjectUtils.isNull(selectOrder)) {
+					throw new RuntimeException("未找到发货单据信息");
 				}
+				selectOrder.setStatus(4);
 				billOrder.setStatus(4);
 				text = "已确认收货!";
 			} else {
-				if ("234557".equals(AuthUtil.getTenantId())){
-					selectOrder = baseMapper.selectById(order.getId());
-					if (ObjectUtils.isNull(selectOrder)) {
-						throw new RuntimeException("未找到发货单据信息");
-					}
-					billOrder = baseMapper.selectById(selectOrder.getSrcId());
-					if (ObjectUtils.isNull(billOrder)) {
-						throw new RuntimeException("未找到订单单据信息");
-					}
-					selectOrder.setStatus(3);
-					billOrder.setStatus(3);
-					text = "已发货,请注意接收!";
-				}else{
-					billOrder = baseMapper.selectById(order.getId());
-					if (ObjectUtils.isNull(billOrder)) {
-						throw new RuntimeException("未找到订单单据信息");
-					}
-					billOrder.setStatus(3);
-					text = "已发货,请注意接收!";
+				selectOrder = baseMapper.selectById(order.getId());
+				if (ObjectUtils.isNull(selectOrder)) {
+					throw new RuntimeException("未找到发货单据信息");
+				}
+				billOrder = baseMapper.selectById(selectOrder.getSrcId());
+				if (ObjectUtils.isNull(billOrder)) {
+					throw new RuntimeException("未找到订单单据信息");
 				}
+				selectOrder.setStatus(3);
+				billOrder.setStatus(3);
+				text = "已发货,请注意接收!";
 
 				LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 				lambdaQueryWrapper.eq(OrderItems::getPid, billOrder.getId())
@@ -4835,12 +4823,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					}
 				}
 			}
-			if ("234557".equals(AuthUtil.getTenantId())){
-				selectOrder.setUpdateTime(new Date());
-				selectOrder.setUpdateUserName(AuthUtil.getUserName());
-				selectOrder.setUpdateUser(AuthUtil.getUserId());
-				baseMapper.updateById(selectOrder);
-			}
+			selectOrder.setUpdateTime(new Date());
+			selectOrder.setUpdateUserName(AuthUtil.getUserName());
+			selectOrder.setUpdateUser(AuthUtil.getUserId());
+			baseMapper.updateById(selectOrder);
 			billOrder.setUpdateTime(new Date());
 			billOrder.setUpdateUserName(AuthUtil.getUserName());
 			billOrder.setUpdateUser(AuthUtil.getUserId());
@@ -4916,7 +4902,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (3 == billOrder.getStatus()) {
 			throw new RuntimeException("订单取消失败!该订单已发货,请申请退货");
 		}
-		if ("234557".equals(AuthUtil.getTenantId())){
+		if ("234557".equals(AuthUtil.getTenantId())) {
 			LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
 			orderLambdaQueryWrapper.eq(Order::getSrcId, billOrder.getId())
 				.eq(Order::getIsDeleted, 0)
@@ -4931,7 +4917,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			billOrder.setUpdateUserName(AuthUtil.getUserName());
 			billOrder.setUpdateUser(AuthUtil.getUserId());
 			baseMapper.updateById(billOrder);
-		}else{
+		} else {
 			baseMapper.deleteById(billOrder.getId());
 		}
 		return R.data("操作成功");
@@ -5375,6 +5361,580 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	}
 
 	@Override
+	public R quickBillingWX(Order order) {
+		// 校验单号重复-新增
+		if (order.getId() == null && StringUtils.isNotBlank(order.getOrderNo())) {
+			LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			orderLambdaQueryWrapper
+				.eq(Order::getOrderNo, order.getOrderNo())
+				.eq(Order::getTradeType, order.getTradeType())
+				.eq(Order::getBillType, order.getBillType())
+				.eq(Order::getTenantId, AuthUtil.getTenantId())
+				.eq(Order::getIsDeleted, 0);
+			Integer count = baseMapper.selectCount(orderLambdaQueryWrapper);
+			if (count != null && count > 0) {
+				throw new SecurityException("合同号:" + order.getOrderNo() + "已存在,禁止重复添加");
+			}
+		}
+		// 校验单号重复-编辑
+		else {
+			LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			orderLambdaQueryWrapper
+				.ne(Order::getId, order.getId())
+				.eq(Order::getOrderNo, order.getOrderNo())
+				.eq(Order::getTradeType, order.getTradeType())
+				.eq(Order::getBillType, order.getBillType())
+				.eq(Order::getTenantId, AuthUtil.getTenantId())
+				.eq(Order::getIsDeleted, 0);
+			Integer count = baseMapper.selectCount(orderLambdaQueryWrapper);
+			if (count != null && count > 0) {
+				throw new SecurityException("合同号:" + order.getOrderNo() + "已存在,禁止重复添加");
+			}
+		}
+		Date date = new Date();
+		if (ObjectUtils.isNotNull(order.getCorpId())) {
+			CorpsDesc corpsDesc = corpsDescClient.getCorpId(order.getCorpId());
+			if (ObjectUtils.isNotNull(corpsDesc)) {
+				if (ObjectUtils.isNotNull(corpsDesc.getCorpsAddrList()) && corpsDesc.getCorpsAddrList().size() > 0) {
+					order.setArrivalAddress(corpsDesc.getCorpsAddrList().get(0).getDetailedAddress());
+				}
+			}
+		} else {
+			if (AuthUtil.getUserRole().equals("客户")) {
+				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId());
+				if (ObjectUtils.isNull(corpsAttn)) {
+					throw new RuntimeException("未查到用户信息");
+				} else {
+					CorpsDesc corpsDesc = corpsDescClient.getCorpId(corpsAttn.getPid());
+					if (ObjectUtils.isNull(corpsDesc)) {
+						throw new RuntimeException("未查到用户信息");
+					} else {
+						order.setCorpId(corpsDesc.getId());
+					}
+				}
+			}
+		}
+		if ("234557".equals(AuthUtil.getTenantId())) {
+			if ("XSJH".equals(order.getBillType())) {
+				// 保存订单主表信息
+				if (order.getId() == null) {
+					// 获取系统编号
+					R billNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
+					if (billNo.getCode() != 200) {
+						TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+						return R.fail(500, "生成系统编号失败");
+					}
+					order.setSysNo((String) billNo.getData());
+					R clientBillNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
+					if (!clientBillNo.isSuccess()) {
+						TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+						return R.fail(500, "生成订单编号失败");
+					}
+					order.setOrderNo((String) clientBillNo.getData());
+					// 进口的orgOrderNo 存的是采购订单号  出口国内存的是本身的订单号码
+					if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
+						order.setOrgOrderNo((String) clientBillNo.getData());
+					}
+
+					order.setTenantId(SecureUtil.getTenantId());
+					order.setCreateTime(date);
+					order.setCreateUser(SecureUtil.getUserId());
+					if (order.getBusinesDate() == null) {
+						order.setBusinesDate(date);
+					}
+					order.setClient(AuthUtil.getUser().getRoleName());
+					R<User> r = userClient.userInfoById(AuthUtil.getUserId());
+					if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+						order.setClientAttn(r.getData().getPhone());
+					}
+					baseMapper.insert(order);
+				} else {
+					LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
+					orderLambdaQueryWrapper
+						.eq(Order::getId, order.getId())
+						.eq(Order::getCorpId, order.getCorpId())
+						.eq(Order::getTradeType, order.getTradeType())
+						.eq(Order::getBillType, order.getBillType())
+						.eq(Order::getTenantId, AuthUtil.getTenantId())
+						.eq(Order::getIsDeleted, 0);
+					Integer count = baseMapper.selectCount(orderLambdaQueryWrapper);
+					if (count <= 0) {
+						R clientBillNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
+						if (!clientBillNo.isSuccess()) {
+							TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+							return R.fail(500, "生成订单编号失败");
+						}
+						order.setOrderNo((String) clientBillNo.getData());
+						// 进口的orgOrderNo 存的是采购订单号  出口国内存的是本身的订单号码
+						if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
+							order.setOrgOrderNo((String) clientBillNo.getData());
+						}
+					}
+					order.setTenantId(SecureUtil.getTenantId());
+					order.setUpdateTime(date);
+					order.setUpdateUser(SecureUtil.getUserId());
+					baseMapper.updateById(order);
+				}
+				BigDecimal costAmount = new BigDecimal("0.00");
+				BigDecimal grossProfit = new BigDecimal("0.00");
+				// 保存订单明细
+				if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
+					for (OrderItems orderItems : order.getOrderItemsList()) {
+						if ("XS".equals(order.getBillType())) {
+							orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+						} else {
+							orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32));
+						}
+						orderItems.setPurchaseCost(orderItems.getPurchasePrice());
+					}
+					List<OrderItems> orderItemsList = orderItemsService.saveOrderItemsMessage(order.getOrderItemsList(), date, order.getId());
+					order.setOrderItemsList(orderItemsList);
+					//应收账款
+					order.setDebitAmount(order.getOrderAmount());
+					//入库出库金额
+					order.setStorageAmount(order.getOrderItemsList().stream().map(OrderItems::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+					//入库出库数量
+					order.setStorageQuantity(order.getOrderItemsList().stream().map(OrderItems::getStorageInQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				}
+				if (ObjectUtils.isNull(order.getThisUsedProfit())) {
+					order.setThisUsedProfit(new BigDecimal("0"));
+				}
+				if (ObjectUtils.isNull(order.getOrderAmount())) {
+					order.setOrderAmount((order.getStorageAmount() == null ? new BigDecimal("0.00") : order.getStorageAmount()).subtract((order.getThisUsedProfit() == null ? new BigDecimal("0.00") : order.getThisUsedProfit())));
+				}
+				order.setCostAmount(costAmount);
+				order.setGrossProfit(grossProfit);
+				order.setConfirmStatus(1);
+				order.setDebitAmount(order.getOrderAmount());
+				order.setBalanceAmount(order.getOrderAmount());
+				order.setPurchaseAmount(order.getOrderAmount());
+
+				order.setSettlmentAmount(order.getOrderAmount().subtract(order.getOrderAmount()));
+				baseMapper.updateById(order);
+				// 保存订单文件信息
+				if (CollectionUtils.isNotEmpty(order.getOrderFilesList())) {
+					List<OrderFiles> orderFilesList = orderFilesService.saveOrderFileMessage(order.getOrderFilesList(), date, order.getId());
+					order.setOrderFilesList(orderFilesList);
+				}
+				//审批数据
+				AuditProecessDTO auditProecessDTO = new AuditProecessDTO();
+				//获取审批级次
+				List<AuditPathsLevels> auditPathsLevels;
+				// 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
+				AuditPathsActs pathsActs;
+				//修箱审批流程
+				if ("XSJH".equals(order.getBillType())) {
+					//是否开启流程
+					pathsActs = iCheckClient.getActsByActId(1003, "status");
+					//获取审批信息
+					auditPathsLevels = iCheckClient.listLevelsByActId(1003, "status");
+
+					auditProecessDTO.setProcessType("销售订单审批");
+					auditProecessDTO.setCheckType("YPJ-XSJH");
+					auditProecessDTO.setUrl("/salesOrderTwo/index");
+					auditProecessDTO.setPageLabel("销售计划单");
+					// 追加跳转路由url
+					auditProecessDTO.setPageStatus("this.$store.getters.pjxsStatus");
+					/* 洗箱审批流程  */
+				} else {
+					throw new SecurityException("请核失败:请核标识设置不正确");
+				}
+				// 没开启审批流直接走 通过流程
+				if (pathsActs == null || pathsActs.getIsEnable() == 2) {
+					throw new SecurityException("当前租户未查询到审批流配置");
+				} else {
+					if (CollectionUtils.isEmpty(auditPathsLevels)) {
+						throw new SecurityException("开启审批失败:未查询到审批信息");
+					}
+					//数量
+					auditProecessDTO.setOrderQuantity(order.getStorageQuantity());
+					//单据金额
+					auditProecessDTO.setAmount(order.getDebitAmount());
+					auditProecessDTO.setPayAmount(order.getDebitAmount());
+					//审批数据
+					auditProecessDTO.setMorderNo(order.getSysNo());
+					auditProecessDTO.setOrderRemark(order.getOrderRemark());
+					auditProecessDTO.setCorpId(order.getCorpId());
+					auditProecessDTO.setPathsLevelsList(auditPathsLevels);
+					auditProecessDTO.setActId(1);
+					auditProecessDTO.setSrcBillId(order.getId());
+					auditProecessDTO.setBillId(order.getId());
+					auditProecessDTO.setBillNo(order.getSysNo());
+					auditProecessDTO.setSendUserId(AuthUtil.getUserId());
+					auditProecessDTO.setSendName(AuthUtil.getUserName());
+					auditProecessDTO.setSendTime(new Date());
+					auditProecessDTO.setReferenceNo(order.getBillNo());
+					R financeProcess = iCheckClient.createFinanceProcess(auditProecessDTO);
+					if (!financeProcess.isSuccess()) {
+						throw new SecurityException("操作失败,请联系管理员");
+					}
+				}
+			} else {
+				order.setStatus(11);
+				if (order.getId() == null) {
+					// 获取系统编号
+					R billNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
+					if (billNo.getCode() != 200) {
+						TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+						return R.fail(500, "生成系统编号失败");
+					}
+					order.setSysNo((String) billNo.getData());
+					R clientBillNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
+					if (!clientBillNo.isSuccess()) {
+						TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+						return R.fail(500, "生成订单编号失败");
+					}
+					order.setOrderNo((String) clientBillNo.getData());
+					// 进口的orgOrderNo 存的是采购订单号  出口国内存的是本身的订单号码
+					if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
+						order.setOrgOrderNo((String) clientBillNo.getData());
+					}
+
+					order.setTenantId(SecureUtil.getTenantId());
+					order.setCreateTime(date);
+					order.setCreateUser(SecureUtil.getUserId());
+					if (order.getBusinesDate() == null) {
+						order.setBusinesDate(date);
+					}
+					order.setClient(AuthUtil.getUser().getRoleName());
+					R<User> r = userClient.userInfoById(AuthUtil.getUserId());
+					if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+						order.setClientAttn(r.getData().getPhone());
+					}
+					baseMapper.insert(order);
+				} else {
+					LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
+					orderLambdaQueryWrapper
+						.eq(Order::getId, order.getId())
+						.eq(Order::getCorpId, order.getCorpId())
+						.eq(Order::getTradeType, order.getTradeType())
+						.eq(Order::getBillType, order.getBillType())
+						.eq(Order::getTenantId, AuthUtil.getTenantId())
+						.eq(Order::getIsDeleted, 0);
+					Integer count = baseMapper.selectCount(orderLambdaQueryWrapper);
+					if (count <= 0) {
+						R clientBillNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
+						if (!clientBillNo.isSuccess()) {
+							TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+							return R.fail(500, "生成订单编号失败");
+						}
+						order.setOrderNo((String) clientBillNo.getData());
+						// 进口的orgOrderNo 存的是采购订单号  出口国内存的是本身的订单号码
+						if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
+							order.setOrgOrderNo((String) clientBillNo.getData());
+						}
+					}
+					order.setTenantId(SecureUtil.getTenantId());
+					order.setUpdateTime(date);
+					order.setUpdateUser(SecureUtil.getUserId());
+					baseMapper.updateById(order);
+				}
+				LandOrder landOrder = new LandOrder();
+				landOrder.setCorpId(order.getCorpId());
+				R<List<LandOrder>> res = landClient.listLandOrder(landOrder);
+				if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+					List<LandOrder> landOrderList = res.getData();
+					BigDecimal freightPay = landOrderList.stream().map(LandOrder::getFreightPay).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+					BigDecimal freight = landOrderList.stream().map(LandOrder::getFreight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+					if ((order.getDebitAmount().multiply(new BigDecimal(OFFSET_RATIO))).compareTo((freightPay.add(freight))) > 0) {
+						throw new SecurityException("订单单号:" + order.getSysNo() + "订单金额大于运费抵消金额");
+					}
+				}
+
+				BigDecimal costAmount = new BigDecimal("0.00");
+				BigDecimal grossProfit = new BigDecimal("0.00");
+				// 保存订单明细
+				if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
+					for (OrderItems orderItems : order.getOrderItemsList()) {
+						if ("XS".equals(order.getBillType())) {
+							orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+						} else {
+							orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32));
+						}
+						BigDecimal stockPrice = new BigDecimal("0.00");
+						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.selectStockParts(null, orderItems.getStorageId(), orderItems.getItemId(), null, null, null, null, null, null);
+						if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+							if ("XS".equals(order.getBillType())) {
+								surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().subtract(orderItems.getStorageInQuantity()));
+								balanceQuantity = balanceQuantity.add(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));
+								stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+
+								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));
+
+							} else {
+								surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().add(orderItems.getStorageInQuantity()));
+								balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
+								balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+								stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+
+								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);
+							r.getData().setBalanceAmount(balanceAmount);
+							r.getData().setStockPrice(stockPrice);
+							stockGoodsClient.updateStock(r.getData());
+
+						} else {
+							StockGoods stockGoods = new StockGoods();
+							if ("CG".equals(order.getBillType())) {
+								stockGoods.setGoodsId(orderItems.getItemId());
+								stockGoods.setStorageId(orderItems.getStorageId());
+								stockGoods.setPurchasePrice(orderItems.getPrice());
+								stockGoods.setStockPrice(orderItems.getPrice());
+								stockGoods.setBalanceQuantity(orderItems.getStorageInQuantity());
+								stockGoods.setBalanceAmount(stockGoods.getBalanceQuantity().multiply(orderItems.getPrice()));
+								stockGoods.setSurplusRouteQuantity(orderItems.getStorageInQuantity());
+								stockGoodsClient.saveStock(stockGoods);
+							} else {
+								stockGoods.setGoodsId(orderItems.getItemId());
+								stockGoods.setStorageId(orderItems.getStorageId());
+								stockGoods.setPurchasePrice(orderItems.getPrice());
+								stockGoods.setStockPrice(orderItems.getPrice());
+								stockGoods.setBalanceQuantity(new BigDecimal("0.00").subtract(orderItems.getStorageInQuantity()));
+								stockGoods.setBalanceAmount(new BigDecimal("0.00").subtract(stockGoods.getBalanceQuantity().multiply(orderItems.getPrice())));
+								stockGoods.setSurplusRouteQuantity(new BigDecimal("0.00").subtract(orderItems.getStorageInQuantity()));
+								stockGoodsClient.saveStock(stockGoods);
+							}
+						}
+					}
+					List<OrderItems> orderItemsList = orderItemsService.saveOrderItemsMessage(order.getOrderItemsList(), date, order.getId());
+					order.setOrderItemsList(orderItemsList);
+					//应收账款
+					order.setDebitAmount(order.getOrderAmount());
+					//入库出库金额
+					order.setStorageAmount(order.getOrderItemsList().stream().map(OrderItems::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+					//入库出库数量
+					order.setStorageQuantity(order.getOrderItemsList().stream().map(OrderItems::getStorageInQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				}
+				if (ObjectUtils.isNull(order.getThisUsedProfit())) {
+					order.setThisUsedProfit(new BigDecimal("0"));
+				}
+				if (ObjectUtils.isNull(order.getOrderAmount())) {
+					order.setOrderAmount((order.getStorageAmount() == null ? new BigDecimal("0.00") : order.getStorageAmount()).subtract((order.getThisUsedProfit() == null ? new BigDecimal("0.00") : order.getThisUsedProfit())));
+				}
+				order.setCostAmount(costAmount);
+				order.setGrossProfit(grossProfit);
+				order.setConfirmStatus(1);
+				this.paymentApply(order, order.getBillType(), order.getTradeType());
+				order.setDebitAmount(order.getOrderAmount());
+				order.setBalanceAmount(order.getOrderAmount());
+				order.setPurchaseAmount(order.getOrderAmount());
+
+				order.setSettlmentAmount(order.getOrderAmount().subtract(order.getOrderAmount()));
+				baseMapper.updateById(order);
+				// 保存订单文件信息
+				if (CollectionUtils.isNotEmpty(order.getOrderFilesList())) {
+					List<OrderFiles> orderFilesList = orderFilesService.saveOrderFileMessage(order.getOrderFilesList(), date, order.getId());
+					order.setOrderFilesList(orderFilesList);
+				}
+				CorpsDesc corpsDesc = corpsDescClient.getCorpId(order.getCorpId());
+				if (ObjectUtils.isNull(corpsDesc)) {
+					throw new RuntimeException("未找到客户信息");
+				}
+				if (ObjectUtils.isNotNull(corpsDesc.getAdminProfiles())) {
+					String[] arrs = corpsDesc.getAdminProfiles().split(",");
+					for (String arr : arrs) {
+						//信息
+						Message sendMessage = new Message();
+						sendMessage.setParameter(String.valueOf(order.getId()));
+						sendMessage.setUserName(AuthUtil.getUserName());
+						sendMessage.setUserId(AuthUtil.getUserId());
+						sendMessage.setToUserId(Long.parseLong(arr));
+						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.getSysNo() + "发货成功!");
+						R save = messageClient.save(sendMessage);
+						if (!save.isSuccess()) {
+							throw new SecurityException("发送消息失败");
+						}
+					}
+				}
+			}
+		} else {
+			// 订单时间
+			order.setStatus(1);
+			order.setBusinesDate(new Date());
+			order.setSalesName(AuthUtil.getUserId() + "");
+			// 保存订单主表信息
+			// 获取系统编号
+			R billNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
+			if (billNo.getCode() != 200) {
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				return R.fail(500, "生成系统编号失败");
+			}
+			order.setSysNo((String) billNo.getData());
+			R clientBillNo = serialClient.getBillNo(order.getBillType(), order.getTradeType(), order.getBillType());
+			if (!clientBillNo.isSuccess()) {
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				return R.fail(500, "生成订单编号失败");
+			}
+			order.setOrderNo((String) clientBillNo.getData());
+			// 进口的orgOrderNo 存的是采购订单号  出口国内存的是本身的订单号码
+			if (!order.getBillType().equals(OrderTypeEnum.IMPORT.getType())) {
+				order.setOrgOrderNo((String) clientBillNo.getData());
+			}
+
+			order.setTenantId(SecureUtil.getTenantId());
+			order.setCreateTime(date);
+			order.setCreateUser(SecureUtil.getUserId());
+			if (order.getBusinesDate() == null) {
+				order.setBusinesDate(date);
+			}
+			order.setClient(AuthUtil.getUser().getRoleName());
+			R<User> userR = userClient.userInfoById(AuthUtil.getUserId());
+			if (userR.isSuccess() && ObjectUtils.isNotNull(userR.getData())) {
+				order.setClientAttn(userR.getData().getPhone());
+			}
+			baseMapper.insert(order);
+			BigDecimal costAmount = new BigDecimal("0.00");
+			BigDecimal grossProfit = new BigDecimal("0.00");
+			// 保存订单明细
+			if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
+				for (OrderItems orderItems : order.getOrderItemsList()) {
+					if ("XS".equals(order.getBillType())) {
+						orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+					} else {
+						orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32));
+					}
+					orderItems.setPurchaseCost(orderItems.getPurchasePrice());
+					//获取本商品库存
+					R<StockGoodsVO> r = stockGoodsClient.selectStockParts(null, orderItems.getStorageId(), orderItems.getItemId(), null, null, null, null, null, null);
+					if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+						if ("XS".equals(order.getBillType())) {
+							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()));
+							}
+							BigDecimal grossProfits = orderItems.getPrice().subtract(orderItems.getPurchasePrice());
+							grossProfit = grossProfit.add(orderItems.getStorageInQuantity().multiply(grossProfits));
+						} else {
+							costAmount = costAmount.add(orderItems.getPurchasePrice().multiply(orderItems.getStorageInQuantity()));
+							grossProfit = grossProfit.add(new BigDecimal("0.00"));
+
+						}
+					} else {
+						StockGoods stockGoods = new StockGoods();
+						if ("CG".equals(order.getBillType())) {
+							stockGoods.setGoodsId(orderItems.getItemId());
+							stockGoods.setStorageId(orderItems.getStorageId());
+							stockGoods.setPurchasePrice(orderItems.getPrice());
+							stockGoods.setStockPrice(orderItems.getPrice());
+							stockGoods.setBalanceQuantity(orderItems.getStorageInQuantity());
+							stockGoods.setBalanceAmount(stockGoods.getBalanceQuantity().multiply(orderItems.getPrice()));
+							stockGoods.setSurplusRouteQuantity(orderItems.getStorageInQuantity());
+							stockGoodsClient.saveStock(stockGoods);
+						} else {
+							stockGoods.setGoodsId(orderItems.getItemId());
+							stockGoods.setStorageId(orderItems.getStorageId());
+							stockGoods.setPurchasePrice(orderItems.getPrice());
+							stockGoods.setStockPrice(orderItems.getPrice());
+							stockGoods.setBalanceQuantity(new BigDecimal("0.00").subtract(orderItems.getStorageInQuantity()));
+							stockGoods.setBalanceAmount(new BigDecimal("0.00").subtract(stockGoods.getBalanceQuantity().multiply(orderItems.getPrice())));
+							stockGoods.setSurplusRouteQuantity(new BigDecimal("0.00").subtract(orderItems.getStorageInQuantity()));
+							stockGoodsClient.saveStock(stockGoods);
+						}
+					}
+				}
+				List<OrderItems> orderItemsList = orderItemsService.saveOrderItemsMessage(order.getOrderItemsList(), date, order.getId());
+				order.setOrderItemsList(orderItemsList);
+				//应收账款
+				order.setDebitAmount(order.getOrderAmount());
+				//入库出库金额
+				order.setStorageAmount(order.getOrderItemsList().stream().map(OrderItems::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				//入库出库数量
+				order.setStorageQuantity(order.getOrderItemsList().stream().map(OrderItems::getStorageInQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			}
+			if (ObjectUtils.isNull(order.getThisUsedProfit())) {
+				order.setThisUsedProfit(new BigDecimal("0"));
+			}
+			if (ObjectUtils.isNull(order.getOrderAmount())) {
+				order.setOrderAmount((order.getStorageAmount() == null ? new BigDecimal("0.00") : order.getStorageAmount()).subtract((order.getThisUsedProfit() == null ? new BigDecimal("0.00") : order.getThisUsedProfit())));
+			}
+			order.setCostAmount(costAmount);
+			order.setGrossProfit(grossProfit);
+			order.setConfirmStatus(1);
+			this.paymentApply(order, order.getBillType(), order.getTradeType());
+			order.setDebitAmount(order.getOrderAmount());
+			order.setBalanceAmount(order.getOrderAmount());
+			order.setPurchaseAmount(order.getOrderAmount());
+			order.setSettlmentAmount(order.getOrderAmount().subtract(order.getOrderAmount()));
+			baseMapper.updateById(order);
+
+			// 保存订单文件信息
+			if (CollectionUtils.isNotEmpty(order.getOrderFilesList())) {
+				List<OrderFiles> orderFilesList = orderFilesService.saveOrderFileMessage(order.getOrderFilesList(), date, order.getId());
+				order.setOrderFilesList(orderFilesList);
+			}
+			CorpsDesc corpsDesc = corpsDescClient.getCorpId(order.getCorpId());
+			if (ObjectUtils.isNull(corpsDesc)) {
+				throw new RuntimeException("未找到客户信息");
+			}
+			if (ObjectUtils.isNotNull(corpsDesc.getAdminProfiles())) {
+				String[] arrs = corpsDesc.getAdminProfiles().split(",");
+				for (String arr : arrs) {
+					//信息
+					Message sendMessage = new Message();
+					sendMessage.setParameter(String.valueOf(order.getId()));
+					sendMessage.setUserName(AuthUtil.getUserName());
+					sendMessage.setUserId(AuthUtil.getUserId());
+					sendMessage.setToUserId(Long.parseLong(arr));
+					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.getSysNo() + "下单成功!");
+					R save = messageClient.save(sendMessage);
+					if (!save.isSuccess()) {
+						throw new SecurityException("发送消息失败");
+					}
+				}
+			}
+			//通联支付下单处理
+			R r = this.payPrepay(order.getId());
+			if (!r.isSuccess() || r.getCode() != 200) {
+				throw new RuntimeException("支付失败!原因:" + r.getData());
+			} else {
+				return r;
+			}
+		}
+		return R.data(order);
+	}
+
+	@Override
 	public MonthSales monthSales(OrderVO order) {
 		MonthSales monthSales = new MonthSales();
 		if (AuthUtil.getTenantId().equals("673511")) {