纪新园 пре 1 година
родитељ
комит
287d511bc1
23 измењених фајлова са 803 додато и 198 уклоњено
  1. 7 2
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java
  2. 6 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/OrderItems.java
  3. 5 0
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/enums/OrderTypeEnum.java
  4. 5 2
      blade-service/blade-check/src/main/java/org/springblade/check/controller/AuditProecessController.java
  5. 1 0
      blade-service/blade-check/src/main/java/org/springblade/check/service/IAuditProecessService.java
  6. 172 20
      blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java
  7. 2 0
      blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java
  8. 0 8
      blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java
  9. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/aea/service/impl/AeaBillsServiceImpl.java
  10. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/customsDeclaration/service/impl/CustomsDeclarationServiceImpl.java
  11. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml
  12. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java
  13. 72 38
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java
  14. 201 4
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/AgencyOrderController.java
  15. 26 3
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/OrderItemsController.java
  16. 52 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/excel/AgencyOrderItemsExcel.java
  17. 4 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderItemsService.java
  18. 2 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java
  19. 49 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderItemsServiceImpl.java
  20. 88 19
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  21. 97 93
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java
  22. 9 5
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java
  23. 1 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/feign/StockGoodsClient.java

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

@@ -97,7 +97,7 @@ public class Order implements Serializable {
 	@ApiModelProperty(value = "合同类型")
 	private String orderType;
 	/**
-	 * 订单日期
+	 * 订单日期(采购计划业务日期)
 	 */
 	@ApiModelProperty(value = "订单日期")
 	private Date businesDate;
@@ -613,7 +613,7 @@ public class Order implements Serializable {
 	@ApiModelProperty(value = "箱量")
 	private BigDecimal boxNumber;
 	/**
-	 * 起订量
+	 * 起订量(采购计划总条数)
 	 */
 	@ApiModelProperty(value = "起订量")
 	private BigDecimal minOrder;
@@ -1506,6 +1506,11 @@ public class Order implements Serializable {
 	 */
 	@ApiModelProperty(value = "原订单号")
 	private String oldOrderNo;
+	/**
+	 * 品牌(达沃特采购计划)
+	 */
+	@ApiModelProperty(value = "品牌")
+	private String brand;
 
 	public String get$buyerId() {
 		return $buyerId;

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

@@ -865,6 +865,12 @@ public class OrderItems implements Serializable {
 	@ApiModelProperty(value = "产品毛利")
 	private BigDecimal goodsGrossProfit;
 
+	/**
+	 * 平台代理明细
+	 */
+	@ApiModelProperty(value = "平台代理明细")
+	private String type;
+
 
 
 }

+ 5 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/enums/OrderTypeEnum.java

@@ -24,6 +24,11 @@ public enum OrderTypeEnum {
 	SALES("XS"),
 
 	/**
+	 * 代理订单
+	 */
+	PROXY_ORDER("DLDD"),
+
+	/**
 	 * 发货类型
 	 */
 	SHIP("FH"),

+ 5 - 2
blade-service/blade-check/src/main/java/org/springblade/check/controller/AuditProecessController.java

@@ -339,10 +339,10 @@ public class AuditProecessController extends BladeController {
 		else if ("xsgz".equals(proecess.getCheckType()) || "czgz".equals(proecess.getCheckType()) || "gzgz".equals(proecess.getCheckType()) || "hqgz".equals(proecess.getCheckType())) {
 			auditProecessService.salaryCheck(auditProecess);
 		}
-		//平台代理订单审核
+		/*//平台代理订单审核
 		else if ("dldd".equals(proecess.getCheckType())) {
 			auditProecessService.agencyOrderProcess(auditProecess);
-		}
+		}*/
 		//标书订单审核
 		else if ("bsdd".equals(proecess.getCheckType())) {
 			auditProecessService.bidingCheck(auditProecess);
@@ -389,6 +389,9 @@ public class AuditProecessController extends BladeController {
 			auditProecessService.pjOrderCheck(auditProecess);
 		}else if ("PJCG".equals(proecess.getCheckType())){
 			auditProecessService.pjOrderCheck(auditProecess);
+		}// 代理订单
+		else if ("DLDD".equals(proecess.getCheckType())) {
+			auditProecessService.agencyOrderCheckProcess(auditProecess);
 		}else {
 			auditProecessService.commonCheck(auditProecess);
 		}

+ 1 - 0
blade-service/blade-check/src/main/java/org/springblade/check/service/IAuditProecessService.java

@@ -48,6 +48,7 @@ public interface IAuditProecessService extends IService<AuditProecess> {
 	void serverProcess(AuditProecess auditProecess);
 
 	void orderCheckProcess(AuditProecess auditProecess);
+	void agencyOrderCheckProcess(AuditProecess auditProecess);
 
 	/**
 	 * 销售退单审核

+ 172 - 20
blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java

@@ -27,7 +27,6 @@ import com.trade.purchase.extra.feign.IClaimClient;
 import com.trade.purchase.extra.feign.ILeadsClient;
 import com.trade.purchase.office.feign.IOfficeOrderClient;
 import com.trade.purchase.order.feign.IFinancingClient;
-import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
 import org.springblade.box.tube.entity.*;
 import org.springblade.box.tube.feign.*;
@@ -77,8 +76,6 @@ import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
-import static org.springblade.common.constant.TenantConstant.APPROVAL_PROCESS;
-
 /**
  * 审批流记录 服务实现类
  *
@@ -215,12 +212,12 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 				String corpName = null;
 				if (auditProecessDTO.getCorpId() != null) {
 					String status = sysClient.getParamService("mall.data");
-					if (ObjectUtils.isNotNull(status) && "1".equals(status)){
+					if (ObjectUtils.isNotNull(status) && "1".equals(status)) {
 						PjCorpsDesc corpMessage = ipjCorpClient.getByCorp(auditProecessDTO.getCorpId());
 						if (corpMessage != null) {
 							corpName = corpMessage.getCname();
 						}
-					}else{
+					} else {
 						R<CorpsDesc> corpMessage = iCorpsDescClient.getCorpMessage(auditProecessDTO.getCorpId());
 						if (corpMessage.isSuccess() && corpMessage.getData() != null) {
 							corpName = corpMessage.getData().getCname();
@@ -302,12 +299,12 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 						"" + auditProecessDTO.getBillNo() + "," + "订单金额:" + auditProecessDTO.getAmount() + ",请审核。"
 						+ " 提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
 					);
-				}else if ("退款审批".equals(auditProecessDTO.getProcessType())) {
+				} else if ("退款审批".equals(auditProecessDTO.getProcessType())) {
 					message.setMessageBody("您有新的售后审核,客户名:" + corpName + "," + "订单号:" +
 						"" + auditProecessDTO.getBillNo() + ",请审核。"
 						+ " 提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
 					);
-				}else if ("采购审核".equals(auditProecessDTO.getProcessType())) {
+				} else if ("采购审核".equals(auditProecessDTO.getProcessType())) {
 					message.setMessageBody("您有新的采购审核,客户名:" + corpName + "," + "订单号:" +
 						"" + auditProecessDTO.getBillNo() + ",请审核。"
 						+ " 提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
@@ -316,23 +313,23 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 
 				message.setUrl("/approveData/index");
 				sendMsgToGroup(message, e.getAuditUserId());
-				if (ObjectUtils.isNotNull(value) && value.equals("1")){
-					if("销售审批".equals(auditProecess.getProcessType())){
+				if (ObjectUtils.isNotNull(value) && value.equals("1")) {
+					if ("销售审批".equals(auditProecess.getProcessType())) {
 						auditProecess.setAuditStatus("A");
-					}else{
+					} else {
 						auditProecess.setAuditStatus("S");
 					}
-				}else{
+				} else {
 					auditProecess.setAuditStatus("S");
 				}
 			} else {
-				if (ObjectUtils.isNotNull(value) && value.equals("1")){
-					if("销售审批".equals(auditProecess.getProcessType())){
+				if (ObjectUtils.isNotNull(value) && value.equals("1")) {
+					if ("销售审批".equals(auditProecess.getProcessType())) {
 						auditProecess.setAuditStatus("A");
-					}else{
+					} else {
 						auditProecess.setAuditStatus("N");
 					}
-				}else{
+				} else {
 					auditProecess.setAuditStatus("N");
 				}
 			}
@@ -952,7 +949,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 					// 给角色为助理的人发送消息
 					R<String> roleId = sysClient.getRoleIds(AuthUtil.getTenantId(), "助理");
 					if (roleId.isSuccess() && roleId.getData() != null) {
-						R<List<User>> userList = userClient.listUserByRoleId(roleId.getData(),null,null);
+						R<List<User>> userList = userClient.listUserByRoleId(roleId.getData(), null, null);
 						if (userList.isSuccess() && userList.getData() != null) {
 							userList.getData().forEach(user -> {
 								// 推送消息提醒助理生成采购
@@ -1013,6 +1010,160 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 		baseMapper.updateById(auditProecess);
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void agencyOrderCheckProcess(AuditProecess auditProecess) {
+		//查看最新操作记录,防止重复提交
+		AuditProecess proecessTemp = baseMapper.selectById(auditProecess.getId());
+		if (proecessTemp == null) {
+			throw new SecurityException("未查到此审批记录,禁止操作");
+		}
+		if ("A".equals(proecessTemp.getAuditStatus()) || "B".equals(proecessTemp.getAuditStatus())) {
+			throw new SecurityException("当前记录已经完成审批,禁止重复操作");
+		}
+
+		if (auditProecess.getAuditStatus() == null || !"S".equals(auditProecess.getAuditStatus())) {
+			throw new SecurityException("审批状态非待审,禁止操作");
+		}
+		//信息
+		Message sendMessage = new Message();
+		sendMessage.setParameter(String.valueOf(auditProecess.getBillId()));
+		sendMessage.setUserName(AuthUtil.getUserName());
+		sendMessage.setUserId(AuthUtil.getUserId());
+		sendMessage.setToUserId(auditProecess.getSendUserId());
+		sendMessage.setToUserName(auditProecess.getSendName());
+		sendMessage.setMessageType(1);
+		sendMessage.setTenantId(AuthUtil.getTenantId());
+		sendMessage.setCreateUser(AuthUtil.getUserId());
+		sendMessage.setCreateTime(new Date());
+		sendMessage.setUrl(auditProecess.getUrl());
+		sendMessage.setPageLabel(auditProecess.getPageLabel());
+		sendMessage.setPageStatus(auditProecess.getPageStatus());
+
+		//用户操作 1.通过  2.驳回
+		Integer operate = auditProecess.getOperate();
+		//查看当前审批是否为最后一级
+		String iffinalItem = auditProecess.getIffinalItem();
+		//审批人
+		auditProecess.setAuditUserId(String.valueOf(AuthUtil.getUserId()));
+		//审批时间
+		auditProecess.setAuditOpTime(new Date());
+		//不是最后一级
+		if ("F".equals(iffinalItem)) {
+
+			//通过
+			if (operate == 1) {
+				auditProecess.setAuditStatus("A");
+				//查询下一级,开启待审
+				LambdaQueryWrapper<AuditProecess> auditProecessLambdaQueryWrapper = new LambdaQueryWrapper<>();
+				auditProecessLambdaQueryWrapper
+					.eq(AuditProecess::getBatchNo, auditProecess.getBatchNo())
+					.eq(AuditProecess::getSrcBillId, auditProecess.getSrcBillId())
+					.eq(AuditProecess::getIsDelete, 0)
+					.eq(AuditProecess::getActId, auditProecess.getActId())
+					.eq(AuditProecess::getBillId, auditProecess.getBillId())
+					.eq(AuditProecess::getBillNo, auditProecess.getBillNo())
+					.eq(AuditProecess::getTenantId, AuthUtil.getTenantId())
+					.eq(AuditProecess::getLevelId, auditProecess.getLevelId() + 1);
+				Integer count = baseMapper.selectCount(auditProecessLambdaQueryWrapper);
+				if (count != null && count > 1) {
+					throw new SecurityException("审核失败,获取下一级信息失败");
+				}
+				AuditProecess proecess = baseMapper.selectOne(auditProecessLambdaQueryWrapper);
+				if (proecess == null) {
+					throw new SecurityException("审批通过=>获取下一级信息失败");
+				}
+				proecess.setAuditStatus("S");
+				baseMapper.updateById(proecess);
+
+				SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
+				String corpName = null;
+				if (proecessTemp.getCorpId() != null) {
+					R<CorpsDesc> corpMessage = iCorpsDescClient.getCorpMessage(proecessTemp.getCorpId());
+					if (corpMessage.isSuccess() && corpMessage.getData() != null) {
+						corpName = corpMessage.getData().getCname();
+					}
+				}
+				String orderDate = null;
+				if (proecessTemp.getBillId() != null) {
+					Order order = orderDescClient.getById(proecessTemp.getBillId());
+					if (order != null) {
+						orderDate = simpleDateFormat.format(order.getBusinesDate());
+					}
+				}
+
+				Message message = new Message();
+				message.setParameter(String.valueOf(auditProecess.getBillId()));
+				message.setUserName(AuthUtil.getUserName());
+				message.setUserId(AuthUtil.getUserId());
+				message.setMessageType(1);
+				message.setTenantId(AuthUtil.getTenantId());
+				message.setMessageBody("您有代理订单审批,客户名:" + corpName + "," + "代理订单号:" +
+					"" + proecessTemp.getBillNo() + "," + "订单日期:" + orderDate + ",请审核。"
+					+ "提交人:" + proecessTemp.getSendName() + "  " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
+				);
+				message.setCreateUser(AuthUtil.getUserId());
+				message.setUrl("/approveData/index");
+				message.setCreateTime(new Date());
+
+				// 消息批量通知下一级
+				sendMsgToGroup(message, proecess.getAuditUserId());
+			}
+			//不通过
+			else if (operate == 2) {
+				auditProecess.setAuditStatus("B");
+				R r = orderCheckClient.reject(auditProecess.getSrcBillId());
+				if (!r.isSuccess()) {
+					throw new SecurityException("修改订单状态失败");
+				}
+				sendMessage.setMessageBody("您的代理订单审批未通过" + ",代理订单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				R save = messageClient.save(sendMessage);
+				if (!save.isSuccess()) {
+					throw new SecurityException("发送消息失败");
+				}
+			}
+
+		}
+		//是最后一级
+		else if ("T".equals(iffinalItem)) {
+			//通过
+			if (operate == 1) {
+				auditProecess.setAuditStatus("A");
+				R r = orderCheckClient.approve(auditProecess.getSrcBillId());
+				if (!r.isSuccess()) {
+					throw new SecurityException(r.getMsg());
+				}
+				sendMessage.setMessageBody("您的代理订单审批已通过" + ",代理订单号:" + proecessTemp.getBillNo() + ",请继续操作");
+				R save = messageClient.save(sendMessage);
+				if (!save.isSuccess()) {
+					throw new SecurityException("发送消息失败");
+				}
+			}
+			//不通过
+			else if (operate == 2) {
+				auditProecess.setAuditStatus("B");
+				R r = orderCheckClient.reject(auditProecess.getSrcBillId());
+				if (!r.isSuccess()) {
+					throw new SecurityException("修改订单状态失败");
+				}
+				sendMessage.setMessageBody("您的代理订单审批未通过" + ",代理订单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				R save = messageClient.save(sendMessage);
+				if (!save.isSuccess()) {
+					throw new SecurityException("发送消息失败");
+				}
+			}
+		} else {
+			throw new SecurityException("审批异常,请联系管理员");
+		}
+
+		cleanMsg(proecessTemp.getAuditUserId(), AuthUtil.getUserId(), proecessTemp.getSrcBillId());
+
+		//保存操作记录
+		auditProecess.setAuditMsg(auditProecess.getAuditMsg());
+		auditProecess.setAuditItem(new Date());
+		baseMapper.updateById(auditProecess);
+	}
+
 	/**
 	 * 销售退单审核
 	 */
@@ -1195,7 +1346,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 			} else if ("xsgz".equals(e.getCheckType()) || "czgz".equals(e.getCheckType()) || "gzgz".equals(e.getCheckType()) || "hqgz".equals(e.getCheckType())) {
 				this.salaryCheck(e);
 			} else if ("dldd".equals(e.getCheckType())) {
-				this.agencyOrderProcess(e);
+//				this.agencyOrderProcess(e);
+				this.agencyOrderCheckProcess(e);
 			} else if ("ocg".equals(e.getCheckType()) || "oly".equals(e.getCheckType())) {
 				this.officeCheck(e);
 			} else if ("bsdd".equals(e.getCheckType())) {
@@ -1284,9 +1436,9 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 		List<AuditProecess> auditProecessList = proecessList.stream().filter(e -> e.getBatchNo() == max).collect(Collectors.toList());
 		//如果最新审批记录 第一级已经操作,就禁止撤回
 		long count = auditProecessList.stream().filter(
-			e -> e.getBatchNo() == max &&
-				e.getLevelId() == 1 &&
-				("A".equals(e.getAuditStatus()) || "B".equals(e.getAuditStatus())))
+				e -> e.getBatchNo() == max &&
+					e.getLevelId() == 1 &&
+					("A".equals(e.getAuditStatus()) || "B".equals(e.getAuditStatus())))
 			.count();
 		if (count > 0) {
 			throw new SecurityException("第一级审批已经开始,禁止撤回");

+ 2 - 0
blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java

@@ -155,6 +155,7 @@ public class GoodsDescController extends BladeController {
 					 @RequestParam(name = "upperFrame", required = false) String upperFrame,
 					 @RequestParam(name = "label", required = false) String label,
 					 @RequestParam(name = "categoryitem", required = false) String categoryitem,
+					 @RequestParam(name = "brand", required = false) String brand,
 					 @RequestParam(name = "artsVision", required = false) String artsVision) {
 		LambdaQueryWrapper<GoodsDesc> goodsDescLambdaQueryWrapper = new LambdaQueryWrapper<>();
 
@@ -193,6 +194,7 @@ public class GoodsDescController extends BladeController {
 		goodsDescLambdaQueryWrapper.eq(GoodsDesc::getTenantId, AuthUtil.getTenantId());
 		goodsDescLambdaQueryWrapper.eq(GoodsDesc::getType, 0);
 		goodsDescLambdaQueryWrapper.eq(ObjectUtils.isNotNull(status), GoodsDesc::getStatus, status);
+		goodsDescLambdaQueryWrapper.eq(ObjectUtils.isNotNull(brand), GoodsDesc::getBrand, brand);
 		goodsDescLambdaQueryWrapper.eq(ObjectUtils.isNotNull(unit), GoodsDesc::getUnit, unit);
 		goodsDescLambdaQueryWrapper.eq(ObjectUtils.isNotNull(categoryitem), GoodsDesc::getCategoryitem, categoryitem);
 		goodsDescLambdaQueryWrapper.eq(ObjectUtils.isNotNull(upperFrame), GoodsDesc::getUpperFrame, upperFrame);

+ 0 - 8
blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java

@@ -6909,7 +6909,6 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<FeeCenter>()
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 					.eq(FeeCenter::getDc, MagicValues.D)
-					.eq(FeeCenter::getAccStatus, 0)
 					.eq(FeeCenter::getIsDeleted, 0);
 				lambdaQueryWrapper.in(FeeCenter::getPid, ids);
 				if (ObjectUtils.isNotNull(corpIds)) {
@@ -7161,7 +7160,6 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<FeeCenter>()
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 					.eq(FeeCenter::getDc, MagicValues.C)
-					.eq(FeeCenter::getAccStatus, 0)
 					.eq(FeeCenter::getIsDeleted, 0);
 				lambdaQueryWrapper.in(FeeCenter::getPid, ids);
 				if (ObjectUtils.isNotNull(corpIds)) {
@@ -7915,7 +7913,6 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<FeeCenter>()
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 					.eq(FeeCenter::getDc, MagicValues.D)
-					.eq(FeeCenter::getAccStatus, 0)
 					.eq(FeeCenter::getIsDeleted, 0);
 				lambdaQueryWrapper.in(FeeCenter::getPid, ids);
 				if (ObjectUtils.isNotNull(corpIds)) {
@@ -8165,7 +8162,6 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<FeeCenter>()
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 					.eq(FeeCenter::getDc, MagicValues.C)
-					.eq(FeeCenter::getAccStatus, 0)
 					.eq(FeeCenter::getIsDeleted, 0);
 				lambdaQueryWrapper.in(FeeCenter::getPid, ids);
 				if (ObjectUtils.isNotNull(corpIds)) {
@@ -8407,7 +8403,6 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 			LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<FeeCenter>()
 				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 				.eq(FeeCenter::getDc, MagicValues.C)
-				.eq(FeeCenter::getAccStatus, 0)
 				.eq(FeeCenter::getIsDeleted, 0);
 			if (amends != null) {
 				lambdaQueryWrapper.eq(FeeCenter::getPid, amends.getId());
@@ -8625,7 +8620,6 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 			LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<FeeCenter>()
 				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 				.eq(FeeCenter::getDc, MagicValues.D)
-				.eq(FeeCenter::getAccStatus, 0)
 				.eq(FeeCenter::getIsDeleted, 0);
 			if (amends != null) {
 				lambdaQueryWrapper.eq(FeeCenter::getPid, amends.getId());
@@ -10850,7 +10844,6 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<FeeCenter>()
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 					.eq(FeeCenter::getDc, MagicValues.D)
-					.eq(FeeCenter::getAccStatus, 0)
 					.eq(FeeCenter::getIsDeleted, 0);
 				lambdaQueryWrapper.eq(FeeCenter::getPid, bills.getId());
 				if (ObjectUtils.isNotNull(corpIds)) {
@@ -11070,7 +11063,6 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<FeeCenter>()
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 					.eq(FeeCenter::getDc, MagicValues.C)
-					.eq(FeeCenter::getAccStatus, 0)
 					.eq(FeeCenter::getIsDeleted, 0);
 				lambdaQueryWrapper.eq(FeeCenter::getPid, bills.getId());
 				if (ObjectUtils.isNotNull(corpIds)) {

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/business/aea/service/impl/AeaBillsServiceImpl.java

@@ -1235,7 +1235,7 @@ public class AeaBillsServiceImpl extends ServiceImpl<AeaBillsMapper, AeaBills> i
 		copyBills.setCheckDrStatus(0);
 		copyBills.setCheckDrStatusDescr("未对账");
 		copyBills.setCheckCrStatus(0);
-		copyBills.setCheckCrStatusDescr("未对账");
+		copyBills.setCheckCrStatusDescr("未申请");
 		copyBills.setStlDrStatus(0);
 		copyBills.setStlDrStatusDescr("未结");
 		copyBills.setStlCrStatus(0);

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/business/customsDeclaration/service/impl/CustomsDeclarationServiceImpl.java

@@ -741,7 +741,7 @@ public class CustomsDeclarationServiceImpl extends ServiceImpl<CustomsDeclaratio
 		copyBills.setCheckDrStatus(0);
 		copyBills.setCheckDrStatusDescr("未对账");
 		copyBills.setCheckCrStatus(0);
-		copyBills.setCheckCrStatusDescr("未对账");
+		copyBills.setCheckCrStatusDescr("未申请");
 		copyBills.setStlDrStatus(0);
 		copyBills.setStlDrStatusDescr("未结");
 		copyBills.setStlCrStatus(0);

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml

@@ -400,7 +400,7 @@
             and find_in_set(fee.mblno,#{acc.mblno})
         </if>
         <if test="acc.hblno != null and acc.hblno != ''">
-            and fee.hblno like concat('%', #{acc.hblno}, '%')
+            and find_in_set(fee.hblno,#{acc.hblno})
         </if>
         <if test="acc.billDateStart != null and acc.billDateStart != ''">
             and acc.bill_date &gt;= #{acc.billDateStart}

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java

@@ -1672,7 +1672,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		copyBills.setCheckDrStatus(0);
 		copyBills.setCheckDrStatusDescr("未对账");
 		copyBills.setCheckCrStatus(0);
-		copyBills.setCheckCrStatusDescr("未对账");
+		copyBills.setCheckCrStatusDescr("未申请");
 		copyBills.setStlDrStatus(0);
 		copyBills.setStlDrStatusDescr("未结");
 		copyBills.setStlCrStatus(0);

+ 72 - 38
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java

@@ -470,13 +470,23 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				.eq(Bills::getIsDeleted, 0)
 				.apply("find_in_set(bill_no,'" + billNoHYD + "')"));
 			for (Bills item : billsList) {
-				if (1 == count) {
-					item.setCheckDrStatus(9);
-					item.setCheckDrStatusDescr("已对账");
-				} else if (2 == count || 3 == count) {
-					if (!feeCenters.isEmpty()) {
-						List<FeeCenter> feeCenterList = feeCenters.stream().filter(e -> e.getPid().equals(item.getId())
-							&& "D".equals(e.getDc())).collect(Collectors.toList());
+				if (!feeCenters.isEmpty()) {
+					List<FeeCenter> feeCenterList = feeCenters.stream().filter(e -> e.getPid().equals(item.getId())
+						&& "D".equals(e.getDc())).collect(Collectors.toList());
+					if (1 == count) {
+						BigDecimal amount = feeCenterList.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+						BigDecimal amountStl = feeCenterList.stream().map(FeeCenter::getReconciliationAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+						if (amountStl.compareTo(amount) == 0) {
+							item.setCheckDrStatus(9);
+							item.setCheckDrStatusDescr("已对账");
+						} else if (amountStl.compareTo(amount) < 0 && amountStl.compareTo(new BigDecimal("0.00")) > 0) {
+							item.setCheckDrStatus(3);
+							item.setCheckDrStatusDescr("部分对账");
+						} else {
+							item.setCheckDrStatus(0);
+							item.setCheckDrStatusDescr("未对账");
+						}
+					} else if (2 == count || 3 == count) {
 						BigDecimal amount = feeCenterList.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 						BigDecimal amountStl = feeCenterList.stream().map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 						if (amountStl.compareTo(amount) == 0) {
@@ -505,12 +515,12 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				.apply("find_in_set(bill_no,'" + billNoHYC + "')"));
 			for (Bills item : billsList) {
 				if (1 == count) {
-					item.setCheckCrStatus(9);
-					item.setCheckCrStatusDescr("已对账");
+					/*item.setCheckCrStatus(9);
+					item.setCheckCrStatusDescr("已对账");*/
 				} else if (2 == count || 3 == count) {
 					if (!feeCenters.isEmpty()) {
 						List<FeeCenter> feeCenterList = feeCenters.stream().filter(e -> e.getPid().equals(item.getId()) &&
-							 "C".equals(e.getDc())).collect(Collectors.toList());
+							"C".equals(e.getDc())).collect(Collectors.toList());
 						BigDecimal amount = feeCenterList.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 						BigDecimal amountStl = feeCenterList.stream().map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 						if (amountStl.compareTo(amount) == 0) {
@@ -524,7 +534,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 							item.setStlCrStatusDescr("未结");
 						}
 					}
-				}else if (4 == count) {
+				} else if (4 == count) {
 					if (!feeCenters.isEmpty()) {
 						List<FeeCenter> feeCenterList = feeCenters.stream().filter(e -> e.getPid().equals(item.getId()) &&
 							"C".equals(e.getDc())).collect(Collectors.toList());
@@ -555,13 +565,23 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				.eq(AeaBills::getIsDeleted, 0)
 				.apply("find_in_set(bill_no,'" + billNoKYD + "')"));
 			for (AeaBills item : billsList) {
-				if (1 == count) {
-					item.setCheckDrStatus(9);
-					item.setCheckDrStatusDescr("已对账");
-				} else if (2 == count || 3 == count) {
-					if (!feeCenters.isEmpty()) {
-						List<FeeCenter> feeCenterList = feeCenters.stream().filter(e -> e.getPid().equals(item.getId()) &&
-							 "D".equals(e.getDc())).collect(Collectors.toList());
+				if (!feeCenters.isEmpty()) {
+					List<FeeCenter> feeCenterList = feeCenters.stream().filter(e -> e.getPid().equals(item.getId()) &&
+						"D".equals(e.getDc())).collect(Collectors.toList());
+					if (1 == count) {
+						BigDecimal amount = feeCenterList.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+						BigDecimal amountStl = feeCenterList.stream().map(FeeCenter::getReconciliationAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+						if (amountStl.compareTo(amount) == 0) {
+							item.setCheckDrStatus(9);
+							item.setCheckDrStatusDescr("已对账");
+						} else if (amountStl.compareTo(amount) < 0 && amountStl.compareTo(new BigDecimal("0.00")) > 0) {
+							item.setCheckDrStatus(3);
+							item.setCheckDrStatusDescr("部分对账");
+						} else {
+							item.setCheckDrStatus(0);
+							item.setCheckDrStatusDescr("未对账");
+						}
+					} else if (2 == count || 3 == count) {
 						BigDecimal amount = feeCenterList.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 						BigDecimal amountStl = feeCenterList.stream().map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 						if (amountStl.compareTo(amount) == 0) {
@@ -590,12 +610,12 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				.apply("find_in_set(bill_no,'" + billNoKYC + "')"));
 			for (AeaBills item : billsList) {
 				if (1 == count) {
-					item.setCheckCrStatus(9);
-					item.setCheckCrStatusDescr("已对账");
+					/*item.setCheckCrStatus(9);
+					item.setCheckCrStatusDescr("已对账");*/
 				} else if (2 == count || 3 == count) {
 					if (!feeCenters.isEmpty()) {
 						List<FeeCenter> feeCenterList = feeCenters.stream().filter(e -> e.getPid().equals(item.getId()) &&
-						 "C".equals(e.getDc())).collect(Collectors.toList());
+							"C".equals(e.getDc())).collect(Collectors.toList());
 						BigDecimal amount = feeCenterList.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 						BigDecimal amountStl = feeCenterList.stream().map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 						if (amountStl.compareTo(amount) == 0) {
@@ -609,7 +629,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 							item.setStlCrStatusDescr("未结");
 						}
 					}
-				}if (!feeCenters.isEmpty()) {
+				}
+				if (!feeCenters.isEmpty()) {
 					List<FeeCenter> feeCenterList = feeCenters.stream().filter(e -> e.getPid().equals(item.getId()) &&
 						"C".equals(e.getDc())).collect(Collectors.toList());
 					BigDecimal amount = feeCenterList.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -639,13 +660,23 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				.eq(CustomsDeclaration::getIsDeleted, 0)
 				.apply("find_in_set(bill_no,'" + billNoBGD + "')"));
 			for (CustomsDeclaration item : billsList) {
-				if (1 == count) {
-					item.setCheckDrStatus(9);
-					item.setCheckDrStatusDescr("已对账");
-				} else if (2 == count || 3 == count) {
-					if (!feeCenters.isEmpty()) {
-						List<FeeCenter> feeCenterList = feeCenters.stream().filter(e -> e.getPid().equals(item.getId()) &&
-							 "D".equals(e.getDc())).collect(Collectors.toList());
+				if (!feeCenters.isEmpty()) {
+					List<FeeCenter> feeCenterList = feeCenters.stream().filter(e -> e.getPid().equals(item.getId()) &&
+						"D".equals(e.getDc())).collect(Collectors.toList());
+					if (1 == count) {
+						BigDecimal amount = feeCenterList.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+						BigDecimal amountStl = feeCenterList.stream().map(FeeCenter::getReconciliationAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+						if (amountStl.compareTo(amount) == 0) {
+							item.setCheckDrStatus(9);
+							item.setCheckDrStatusDescr("已对账");
+						} else if (amountStl.compareTo(amount) < 0 && amountStl.compareTo(new BigDecimal("0.00")) > 0) {
+							item.setCheckDrStatus(3);
+							item.setCheckDrStatusDescr("部分对账");
+						} else {
+							item.setCheckDrStatus(0);
+							item.setCheckDrStatusDescr("未对账");
+						}
+					} else if (2 == count || 3 == count) {
 						BigDecimal amount = feeCenterList.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 						BigDecimal amountStl = feeCenterList.stream().map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 						if (amountStl.compareTo(amount) == 0) {
@@ -675,12 +706,12 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				.apply("find_in_set(bill_no,'" + billNoBGC + "')"));
 			for (CustomsDeclaration item : billsList) {
 				if (1 == count) {
-					item.setCheckCrStatus(9);
-					item.setCheckCrStatusDescr("已对账");
+					/*item.setCheckCrStatus(9);
+					item.setCheckCrStatusDescr("已对账");*/
 				} else if (2 == count || 3 == count) {
 					if (!feeCenters.isEmpty()) {
 						List<FeeCenter> feeCenterList = feeCenters.stream().filter(e -> e.getPid().equals(item.getId()) &&
-							 "C".equals(e.getDc())).collect(Collectors.toList());
+							"C".equals(e.getDc())).collect(Collectors.toList());
 						BigDecimal amount = feeCenterList.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 						BigDecimal amountStl = feeCenterList.stream().map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 						if (amountStl.compareTo(amount) == 0) {
@@ -694,7 +725,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 							item.setStlCrStatusDescr("未结");
 						}
 					}
-				}if (!feeCenters.isEmpty()) {
+				}
+				if (!feeCenters.isEmpty()) {
 					List<FeeCenter> feeCenterList = feeCenters.stream().filter(e -> e.getPid().equals(item.getId()) &&
 						"C".equals(e.getDc())).collect(Collectors.toList());
 					BigDecimal amount = feeCenterList.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -776,13 +808,13 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				item.setCheckDrStatus(3);
 				item.setCheckDrStatusDescr("部分对账");
 			}
-			if (countC == divideIdsC.size()) {
+			/*if (countC == divideIdsC.size()) {
 				item.setCheckCrStatus(9);
 				item.setCheckCrStatusDescr("已对账");
 			} else {
 				item.setCheckCrStatus(3);
 				item.setCheckCrStatusDescr("部分对账");
-			}
+			}*/
 		} else {
 			if (countD == idsD.size()) {
 				item.setCheckDrStatus(9);
@@ -791,13 +823,13 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				item.setCheckDrStatus(3);
 				item.setCheckDrStatusDescr("部分对账");
 			}
-			if (countC == idsC.size()) {
+			/*if (countC == idsC.size()) {
 				item.setCheckCrStatus(3);
 				item.setCheckCrStatusDescr("已对账");
 			} else {
 				item.setCheckCrStatus(3);
 				item.setCheckCrStatusDescr("部分对账");
-			}
+			}*/
 		}
 		return item;
 	}
@@ -892,6 +924,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
 			feeCenterService.saveOrUpdateBatch(feeCenterList);
 			finAccBillsService.saveOrUpdateBatch(finAccBillsList);
+			updateBillsStatus(finStlBills.getFinStlBillsItemsList(), 1, null);
 		} else {
 			throw new RuntimeException("请选择明细");
 		}
@@ -1846,8 +1879,9 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 							e.setAppliedAmount(e.getAppliedAmount().add(currentStlAmount));
 							currentStlAmount = new BigDecimal("0.00");
 						} else {
+							BigDecimal subAmount = e.getAmount().subtract(e.getAppliedAmount());
+							currentStlAmount = currentStlAmount.subtract(subAmount);
 							e.setAppliedAmount(e.getAmount());
-							currentStlAmount = currentStlAmount.subtract(e.getAmount());
 						}
 						feeCenterList.add(e);
 					}

+ 201 - 4
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/AgencyOrderController.java

@@ -4,21 +4,27 @@ 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.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.trade.purchase.order.enums.OrderTypeEnum;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import org.springblade.client.entity.CorpsAttn;
 import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.entity.GoodsDesc;
+import org.springblade.client.feign.ICorpsAttnClient;
 import org.springblade.client.feign.ICorpsDescClient;
-import org.springblade.client.feign.IFeesDescClient;
+import org.springblade.client.feign.IGoodsDescClient;
 import org.springblade.core.boot.ctrl.BladeController;
 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;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.deliver.goods.entity.Delivery;
 import org.springblade.deliver.goods.feign.IDeliveryClient;
 import org.springblade.finance.feign.IFinanceClient;
@@ -33,6 +39,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -54,10 +61,11 @@ public class AgencyOrderController extends BladeController {
 	private final IOrderModifyService orderModifyService;
 	private final IOrderPartsService orderPartsService;
 	private final ICorpsDescClient corpsDescClient;//获取客户信息
+	private final ICorpsAttnClient corpsAttnClient;//获取客户信息
 	private final IUserClient userClient;//获取用户信息
-	private final IFeesDescClient feesDescClient;
 	private final IFinanceClient iFinanceClient;
 	private final IDeliveryClient deliveryClient;
+	private IGoodsDescClient goodsDescClient;
 
 
 	/**
@@ -95,6 +103,10 @@ public class AgencyOrderController extends BladeController {
 		lambdaQueryWrapper.like(Func.isNotEmpty(order.getArrivalAddress()), Order::getArrivalAddress, order.getArrivalAddress());//到货地址
 		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getActualDeliveryDateStart()), Order::getActualDeliveryDate, order.getActualDeliveryDateStart());//发货日期开始
 		lambdaQueryWrapper.le(Func.isNotEmpty(order.getActualDeliveryDateEnd()), Order::getActualDeliveryDate, order.getActualDeliveryDateEnd());//发货日期结束
+		if (ObjectUtils.isNotNull(order.getBusinesDateList()) && !order.getBusinesDateList().isEmpty()){
+			lambdaQueryWrapper.ge( Order::getBusinesDate, order.getBusinesDateList().get(0));
+			lambdaQueryWrapper.le( Order::getBusinesDate, order.getBusinesDateList().get(1));
+		}
 		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getDeliveryStartDate()), Order::getRequiredDeliveryDate, order.getDeliveryStartDate());//要求发货日期开始
 		lambdaQueryWrapper.le(Func.isNotEmpty(order.getDeliveryEndDate()), Order::getRequiredDeliveryDate, order.getDeliveryEndDate());//要求发货日期结束
 		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getArrivalDateStart()), Order::getRequiredArrivalDate, order.getArrivalDateStart());//要求到货日期开始
@@ -102,6 +114,7 @@ public class AgencyOrderController extends BladeController {
 		lambdaQueryWrapper.like(Func.isNotEmpty(order.getOrderStatus()), Order::getOrderStatus, order.getOrderStatus());//单据状态
 		lambdaQueryWrapper.like(Func.isNotEmpty(order.getSysNo()), Order::getSysNo, order.getSysNo());//系统编号
 		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getCreateUser()), Order::getCreateUser, order.getCreateUser());//制单人
+		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getStatus()), Order::getStatus, order.getStatus());//制单人
 		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getCreateTimeStart()), Order::getCreateTime, order.getCreateTimeStart());//制单日期开始
 		lambdaQueryWrapper.le(Func.isNotEmpty(order.getCreateTimeEnd()), Order::getCreateTime, order.getCreateTimeEnd());//制单日期结束
 		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getDateValidityStart()), Order::getDateValidity, order.getDateValidityStart());//有效日期开始
@@ -151,6 +164,7 @@ public class AgencyOrderController extends BladeController {
 		}
 		return R.data(page);
 	}
+
 	/**
 	 * 修改 销售或采购订单表
 	 */
@@ -193,6 +207,7 @@ public class AgencyOrderController extends BladeController {
 		orderPartsService.updateByPid(order.getId());
 		return R.success("操作成功");
 	}
+
 	/**
 	 * 新增或修改 国内销售或采购订单表
 	 */
@@ -200,10 +215,21 @@ public class AgencyOrderController extends BladeController {
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入order")
 	public R submit(@Valid @RequestBody Order order) {
-		order.setBillType(OrderTypeEnum.SALES.getType());
+		order.setBillType(OrderTypeEnum.PROXY_ORDER.getType());
 		order.setTradeType(OrderTypeEnum.DOMESTIC.getType());
 		return orderService.saveOrderMessage(order);
 	}
+
+	/**
+	 * 代理订单 请核
+	 */
+	@PostMapping("/checkAgencyOrder")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "Feign-审核通过", notes = "订单主表id")
+	public R checkAgencyOrder(@Valid @RequestBody Order order) {
+		return orderService.checkAgencyOrder(order);
+	}
+
 	/**
 	 * 平台订单 审核通过
 	 */
@@ -214,14 +240,185 @@ public class AgencyOrderController extends BladeController {
 		orderService.approve(id);
 		return R.success("操作成功");
 	}
+
 	/**
 	 * 平台订单审核不通过
 	 */
 	@PostMapping("/reject")
-	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "Feign-审核不通过", notes = "订单主表id")
 	public R reject(@ApiParam(value = "订单主表id", required = true) @RequestParam Long id) {
 		orderService.reject(id);
 		return R.success("操作成功");
 	}
+
+
+	/**
+	 * 销售获取平台代理订单列表
+	 */
+	@GetMapping("/getAgencyOrder")
+	public R<List<Order>> getAgencyOrder(OrderVO order) {
+		LambdaQueryWrapper<Order> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(Order::getTenantId, SecureUtil.getTenantId());//租户id
+		lambdaQueryWrapper.eq(Order::getIsDeleted, 0);//订单是否有效
+		lambdaQueryWrapper.eq(Order::getBillType, OrderTypeEnum.AGENCY_ORDER.getType());//订单类型
+		lambdaQueryWrapper.eq(Order::getTradeType, OrderTypeEnum.DOMESTIC.getType());//贸易类型
+		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getCorpId()), Order::getCorpId, order.getCorpId());//客户id
+//		lambdaQueryWrapper.eq(Order::getOrderStatus, OrderStatusEnum.PASS.getType());//单据状态
+//		lambdaQueryWrapper.eq(Order::getStatus, 3);//单据状态
+		lambdaQueryWrapper.eq(Order::getGenerate, 0);//单据状态
+		lambdaQueryWrapper.orderByDesc(Order::getId);
+		List<Order> page = orderService.list(lambdaQueryWrapper);
+		return R.data(page);
+	}
+
+	/**
+	 * 销售获取平台代理订单明细列表
+	 */
+	@GetMapping("/getAgencyOrderItem")
+	public R<List<OrderItems>> getAgencyOrderItem(@RequestParam Long id) {
+		LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(OrderItems::getTenantId, SecureUtil.getTenantId());//租户id
+		lambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0);//订单是否有效
+		lambdaQueryWrapper.eq(OrderItems::getBillType, OrderTypeEnum.AGENCY_ORDER.getType());//订单类型
+		lambdaQueryWrapper.eq(OrderItems::getPid, id);
+		lambdaQueryWrapper.orderByDesc(OrderItems::getId);
+		List<OrderItems> page = orderItemsService.list(lambdaQueryWrapper);
+		StringBuilder goodsIds = new StringBuilder();
+		for (OrderItems item : page) {
+			goodsIds.append(item.getItemId()).append(",");
+		}
+		List<GoodsDesc> goodsDescList = new ArrayList<>();
+		if (ObjectUtils.isNotNull(goodsIds.toString())){
+			goodsDescList = goodsDescClient.selectItemsIdGoods(goodsIds.substring(0,goodsIds.length()-1));
+		}
+		for (OrderItems item : page) {
+			if (!goodsDescList.isEmpty()){
+				GoodsDesc goodsDesc = goodsDescList.stream().filter(e-> e.getId().equals(item.getItemId())).findFirst().orElse(null);
+				if (goodsDesc != null){
+					item.setCname(goodsDesc.getCname());
+					item.setCode(goodsDesc.getCode());
+					item.setTypeno(goodsDesc.getTypeno());
+					item.setBrandItem(goodsDesc.getBrandItem());
+				}
+			}
+			item.setSrcId(id);
+			item.setSrcItemId(item.getId());
+			item.setSrcOrderNo(item.getBillNo());
+		}
+		return R.data(page);
+	}
+
+	/**
+	 * 自定义分页 销售或采购订单表
+	 */
+	@GetMapping("/getContractList")
+	@ApiOperation(value = "分页", notes = "传入order")
+	public R<IPage<Order>> getContractList(OrderVO order, Query query) {
+		LambdaQueryWrapper<Order> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(Order::getTenantId, SecureUtil.getTenantId());//租户id
+		lambdaQueryWrapper.eq(Order::getIsDeleted, 0);//订单是否有效
+		lambdaQueryWrapper.eq(Order::getBillType, OrderTypeEnum.SALES.getType());//订单类型
+		lambdaQueryWrapper.eq(Order::getTradeType, OrderTypeEnum.DOMESTIC.getType());//贸易类型
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getOrderNo()), Order::getOrderNo, order.getOrderNo());//订单号
+		if (AuthUtil.getUserRole().contains("客户")) {
+			Long corpId = null;
+			CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(), AuthUtil.getTenantId());
+			if (corpsAttn != null) {
+				R<CorpsDesc> res = corpsDescClient.getCorpMessage(corpsAttn.getPid());
+				if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+					corpId = res.getData().getId();
+				}
+			}
+			lambdaQueryWrapper.eq(Order::getCorpId, corpId);//客户id
+		} else {
+			lambdaQueryWrapper.eq(Func.isNotEmpty(order.getCorpId()), Order::getCorpId, order.getCorpId());//客户id
+		}
+		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getContractStartDate()), Order::getBusinesDate, order.getContractStartDate());//合同日期开始
+		lambdaQueryWrapper.le(Func.isNotEmpty(order.getContractEndDate()), Order::getBusinesDate, order.getContractEndDate());//合同日期结束
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getSrcOrderNo()), Order::getSrcOrderNo, order.getSrcOrderNo());//订单来源
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getArrivalAddress()), Order::getArrivalAddress, order.getArrivalAddress());//到货地址
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getSysNo()), Order::getSysNo, order.getSysNo());//系统编号
+		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getCreateUser()), Order::getCreateUser, order.getCreateUser());//制单人
+		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getBelongToCorpId()), Order::getBelongToCorpId, order.getBelongToCorpId());//销售公司
+		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getChargeMember()), Order::getBelongToCorpId, order.getBelongToCorpId());//业务员
+		if (order.getGathering() != null && order.getGathering() == 0) {
+			lambdaQueryWrapper.eq(Order::getBalanceAmount, BigDecimal.ZERO);
+		} else if (order.getGathering() != null && order.getGathering() == 1) {
+			lambdaQueryWrapper.gt(Order::getBalanceAmount, BigDecimal.ZERO);
+		}
+		lambdaQueryWrapper.orderByDesc(Order::getId);
+		IPage<Order> page = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
+
+		StringBuilder corpIds = new StringBuilder();//客户拼接ids
+		StringBuilder belongToCorpIds = new StringBuilder();//销售公司ids
+		StringBuilder productionPlantIds = new StringBuilder();//生产工厂ids
+		StringBuilder createUserIds = new StringBuilder();//创建人id拼接
+
+		for (Order orders : page.getRecords()) {
+			if (ObjectUtil.isNotEmpty(orders.getCorpId())) {
+				corpIds.append(orders.getCorpId()).append(",");
+			}
+			if (ObjectUtil.isNotEmpty(orders.getCorpId())) {
+				belongToCorpIds.append(orders.getBelongToCorpId()).append(",");
+			}
+			if (ObjectUtil.isNotEmpty(orders.getCorpId())) {
+				productionPlantIds.append(orders.getProductionPlant()).append(",");
+			}
+			if (ObjectUtil.isNotEmpty(orders.getCreateUser())) {
+				createUserIds.append(orders.getCreateUser()).append(",");
+			}
+		}
+
+		List<CorpsDesc> corpsDescList = corpsDescClient.selectByCorpIds(corpIds.toString());
+		List<CorpsDesc> belongToCorpList = corpsDescClient.selectByCorpIds(belongToCorpIds.toString());
+		List<CorpsDesc> productionPlantList = corpsDescClient.selectByCorpIds(productionPlantIds.toString());
+		//获得创建人信息
+		List<User> createUserList = userClient.selectUserIds(createUserIds.toString());
+		if (CollectionUtils.isNotEmpty(page.getRecords())) {
+			page.getRecords().forEach(item -> {
+				if (ObjectUtil.isNotEmpty(corpsDescList)) {
+					corpsDescList.stream().filter(e -> e.getId().equals(item.getCorpId()))
+						.findFirst().ifPresent(corpsDesc -> item.setCorpsName(corpsDesc.getCname()));
+				}
+				if (item.getBelongToCorpId() != null) {
+					if (ObjectUtil.isNotEmpty(belongToCorpList)) {
+						belongToCorpList.stream().filter(e -> e.getId().equals(item.getBelongToCorpId()))
+							.findFirst().ifPresent(corpsDesc -> item.setBelongToCorpName(corpsDesc.getCname()));
+					}
+				}
+				if (item.getProductionPlant() != null) {
+					if (ObjectUtil.isNotEmpty(productionPlantList)) {
+						productionPlantList.stream().filter(e -> e.getId().equals(item.getProductionPlant()))
+							.findFirst().ifPresent(corpsDesc -> item.setProductionPlantName(corpsDesc.getCname()));
+					}
+				}
+				//制单人
+				if (item.getCreateUser() != null) {
+					if (ObjectUtil.isNotEmpty(createUserList)) {
+						createUserList.stream().filter(e -> e.getId().equals(item.getCreateUser()))
+							.findFirst().ifPresent(corpsDesc -> item.setCreateUserName(corpsDesc.getName()));
+					}
+				}
+			});
+		}
+		return R.data(page);
+	}
+
+	/**
+	 * 获取客户
+	 */
+	@GetMapping("/getCorp")
+	@ApiOperation(value = "分页", notes = "传入order")
+	public R<CorpsDesc> getCorp() {
+		CorpsDesc corpsDesc = new CorpsDesc();
+		CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(), AuthUtil.getTenantId());
+		if (corpsAttn != null) {
+			R<CorpsDesc> res = corpsDescClient.getCorpMessage(corpsAttn.getPid());
+			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+				corpsDesc = res.getData();
+			}
+		}
+		return R.data(corpsDesc);
+	}
+
 }

+ 26 - 3
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/OrderItemsController.java

@@ -186,7 +186,7 @@ public class OrderItemsController extends BladeController {
 				} else if ("BJ".equals(order.getBillType())) {//销售删除判断
 					//查看是否已生成发货单
 					QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
-					queryWrapper.eq("tenant_id", AuthUtil.getTenantId()).eq("is_deleted",0).eq("src_id",order.getId()).eq("bill_type","XS").eq("trade_type","CK");
+					queryWrapper.eq("tenant_id", AuthUtil.getTenantId()).eq("is_deleted", 0).eq("src_id", order.getId()).eq("bill_type", "XS").eq("trade_type", "CK");
 					Order order1 = orderService.getOne(queryWrapper);
 					if (ObjectUtils.isNotNull(order1)) {
 						return R.fail(500, "该订单已生成销售单不允许删除");
@@ -237,12 +237,12 @@ public class OrderItemsController extends BladeController {
 	@PostMapping("/importPrice")
 	@ApiOperationSupport(order = 12)
 	@ApiOperation(value = "导入订单明细", notes = "传入excel")
-	public R importUser(MultipartFile file,Long warehouseId) {
+	public R importUser(MultipartFile file, Long warehouseId) {
 		List<OrderItemsExcel> excelList = ExcelUtil.read(file, OrderItemsExcel.class);
 		if (CollectionUtils.isEmpty(excelList)) {
 			throw new SecurityException("数据不能为空");
 		}
-		return orderItemsService.importUser(excelList, false,warehouseId);
+		return orderItemsService.importUser(excelList, false, warehouseId);
 	}
 
 	/**
@@ -381,4 +381,27 @@ public class OrderItemsController extends BladeController {
 		return orderItemsService.salesOrderEntry(salesOrderEntryDto);
 	}
 
+
+	/**
+	 * 采购计划明细
+	 */
+	@GetMapping("/exportAgency")
+	@ApiOperationSupport(order = 9)
+	public void exportAgency(HttpServletResponse response, @RequestParam("brand") String brand) {
+		List<AgencyOrderItemsExcel> list = orderItemsService.exportAgency(brand);
+		ExcelUtil.export(response, "导入模板-采购计划明细", "采购计划明细数据表", list, AgencyOrderItemsExcel.class);
+	}
+
+	/**
+	 * 采购计划明细
+	 */
+	@PostMapping("/importAgency")
+	public R importAgency(MultipartFile file) {
+		List<AgencyOrderItemsExcel> excelList = ExcelUtil.read(file, AgencyOrderItemsExcel.class);
+		if (CollectionUtils.isEmpty(excelList)) {
+			throw new SecurityException("数据不能为空");
+		}
+		return orderItemsService.importAgency(excelList);
+	}
+
 }

+ 52 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/excel/AgencyOrderItemsExcel.java

@@ -0,0 +1,52 @@
+package org.springblade.purchase.sales.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 销售订单导入商品明细
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class AgencyOrderItemsExcel implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+	/**
+	 * 品号
+	 */
+	@ExcelProperty(value = "品号(必填)")
+	private String code;
+	/**
+	 * 商品名称
+	 */
+	@ExcelProperty(value = "商品名称(必填)")
+	private String cname;
+	/**
+	 * 规格
+	 */
+	@ExcelProperty(value = "规格")
+	private String typeno;
+	/**
+	 * 花纹
+	 */
+	@ExcelProperty(value = "花纹")
+	private String brandItem;
+	/**
+	 * 库存数量
+	 */
+	@ExcelProperty(value = "库存数量")
+	private BigDecimal storageQuantity;
+	/**
+	 * 订货数量
+	 */
+	@ExcelProperty(value = "数量(必填)")
+	private BigDecimal orderQuantity;
+}

+ 4 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderItemsService.java

@@ -228,4 +228,8 @@ public interface IOrderItemsService extends IService<OrderItems> {
 	public List<OrderItems> saveOrderItemsMessage(List<OrderItems> list, Date date, Long pid);
 
 	List<OrderDateVo> orderNumberV1(Order order);
+
+	List<AgencyOrderItemsExcel> exportAgency(String brand);
+
+	R importAgency(List<AgencyOrderItemsExcel> excelList);
 }

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

@@ -546,4 +546,6 @@ public interface IOrderService extends IService<Order> {
 	R synchronization(Long billId, String ordNo,String primaryOrdNo);
 
 	R generateBills(String ids,String billId);
+
+	R checkAgencyOrder(Order order);
 }

+ 49 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderItemsServiceImpl.java

@@ -282,6 +282,55 @@ public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, OrderIt
 		return baseMapper.orderNumberV1(order);
 	}
 
+	@Override
+	public List<AgencyOrderItemsExcel> exportAgency(String brand) {
+		List<AgencyOrderItemsExcel> itemsExcelList = new ArrayList<>();
+		StockGoods stockGoods = new StockGoods();
+		stockGoods.setBrand(brand);
+		List<StockGoods> stockGoodsList = stockGoodsClient.selectStockList(stockGoods);
+		for (StockGoods item : stockGoodsList) {
+			AgencyOrderItemsExcel agencyOrderItemsExcel = new AgencyOrderItemsExcel();
+			agencyOrderItemsExcel.setCode(item.getCode());
+			agencyOrderItemsExcel.setCname(item.getCname());
+			agencyOrderItemsExcel.setBrandItem(item.getBrandItem());
+			agencyOrderItemsExcel.setTypeno(item.getTypeno());
+			agencyOrderItemsExcel.setStorageQuantity(item.getBalanceQuantity());
+			itemsExcelList.add(agencyOrderItemsExcel);
+		}
+		return itemsExcelList;
+	}
+
+	@Override
+	public R importAgency(List<AgencyOrderItemsExcel> excelList) {
+		List<OrderItems> list = new ArrayList<>();//导入成功
+		excelList.forEach(item -> {
+			R<GoodsDesc> goods = goodsDescClient.GoodsByCode(item.getCode());
+			if (goods.isSuccess() && goods.getData() != null) {
+				OrderItems orderItems = new OrderItems();
+				orderItems.setCode(item.getCode());
+				orderItems.setOrderQuantity(item.getOrderQuantity());
+				orderItems.setCname(goods.getData().getCname());//商品名称
+				orderItems.setItemId(goods.getData().getId());//商品id
+				orderItems.setTypeno(goods.getData().getTypeno());//商品规格
+				orderItems.setItemType(goods.getData().getTypeno());//商品规格
+				orderItems.setIntegralMultiples(goods.getData().getIntegralMultiples());//积分倍数
+				orderItems.setBrandItem(goods.getData().getBrandItem());//花纹
+				orderItems.setSize(goods.getData().getSize());//尺寸
+				orderItems.setPriceCategory("一般");//价格类别
+				orderItems.setCorpId(goods.getData().getCorpId());//供应id
+				orderItems.setCorpName(goods.getData().getCorpName());//供应商名称
+				orderItems.setCntrVolumn(goods.getData().getCntrVolumn());//箱体积
+				orderItems.setCartonWeight(goods.getData().getCartonWeight());//箱重量
+				GoodsType goodsType = goodsDescClient.goodTypeId(goods.getData().getId());
+				orderItems.setPriceCategory(goodsType.getCname());//商品类别名称
+				list.add(orderItems);
+			} else {
+				throw new RuntimeException("商品名称" + item.getCname() + "不存在");
+			}
+		});
+		return R.data(list);
+	}
+
 	/**
 	 * 获取订单明细数据
 	 *

+ 88 - 19
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -62,7 +62,6 @@ import org.springblade.pay.tonglianPayment.dto.PaymentDTO;
 import org.springblade.pay.tonglianPayment.entity.Parameters;
 import org.springblade.pay.tonglianPayment.fegin.IPaymentClient;
 import org.springblade.pay.tonglianPayment.fegin.ITongLianPaymentClient;
-import org.springblade.purchase.sales.document.service.IDocumentRecoveryService;
 import org.springblade.purchase.sales.entity.*;
 import org.springblade.purchase.sales.enums.OrderStatusEnum;
 import org.springblade.purchase.sales.excel.*;
@@ -196,9 +195,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 	private final IWechatClient wechatClient;
 
-	private final IDocumentRecoveryService documentRecoveryService;
-
-
 	@Override
 	public IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order) {
 		List<OrderVO> orderVOList = baseMapper.selectOrderPage(page, order);
@@ -488,7 +484,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				item.setBusinesDate(order.getBusinesDate());
 				item.setPlannedDeliveryDate(order.getPlannedDeliveryDate());
 				item.setCarry(order.getBuyerName());
-				item.setDetailType("MX");
+				if (OrderTypeEnum.PROXY_ORDER.getType().equals(order.getBillType())) {
+					item.setType(OrderTypeEnum.PROXY_ORDER.getType());
+				} else {
+					item.setDetailType("MX");
+				}
 				if (item.getId() == null) {
 					item.setTenantId(SecureUtil.getTenantId());
 					item.setCreateUser(SecureUtil.getUserId());
@@ -507,6 +507,26 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			});
 //			List<OrderItems> orderItemsList = orderItemsService.saveOrderItemsMessage(order.getOrderItemsList(), date, order.getId());
 			order.setOrderItemsList(order.getOrderItemsList());
+			if (order.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType()) && OrderTypeEnum.SALES.getType().equals(order.getBillType())) {
+				List<Long> pidList = order.getOrderItemsList().stream()
+					.filter(e -> ObjectUtils.isNotNull(e.getType()) && OrderTypeEnum.DOMESTIC.getType().equals(e.getType()))
+					.map(OrderItems::getSrcId).distinct().collect(Collectors.toList());
+				if (!pidList.isEmpty()) {
+					List<Order> orderList = baseMapper.selectList(new LambdaQueryWrapper<Order>()
+						.eq(Order::getTenantId, AuthUtil.getTenantId())
+						.eq(Order::getIsDeleted, 0)
+						.in(Order::getId, pidList));
+					if (!orderList.isEmpty()) {
+						for (Order item : orderList) {
+							item.setGenerate(1);
+						}
+						this.updateBatchById(orderList);
+					}
+				}
+			}
+			if (order.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType()) && OrderTypeEnum.PROXY_ORDER.getType().equals(order.getBillType())) {
+				order.setMinOrder(order.getOrderItemsList().stream().map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
+			}
 		}
 		// 保存订单文件信息
 		if (CollectionUtils.isNotEmpty(order.getOrderFilesList())) {
@@ -665,9 +685,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				}
 				// 毛利率
 				order.setGrossProfitRate(grossProfitRate);
-				if (order.getId() != null){
-					Acc acc = financeClient.selectByParentId(order.getId(),"收费");
-					if (acc != null){
+				if (order.getId() != null) {
+					Acc acc = financeClient.selectByParentId(order.getId(), "收费");
+					if (acc != null) {
 						acc.setAmount(amount);
 						acc.setPrice(amount);
 						acc.setSrcRefno(order.getOrderNo());
@@ -2073,7 +2093,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		/**===========================End撤销操作返利信息=============================*/
 
 		//删除账单明细
-		Acc acc = financeClient.selectByParentId(orderMessage.getId(),null);
+		Acc acc = financeClient.selectByParentId(orderMessage.getId(), null);
 		if (ObjectUtil.isNotEmpty(acc)) {
 			financeClient.remove(acc.getId().toString());
 		}
@@ -8169,8 +8189,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				amountCnyD = amountCnyD.divide(order.getExchangeRate(), 2, BigDecimal.ROUND_HALF_UP);
 				amount = amount.add(amountCnyD).add(amountUsdD);
 			}
-		}
-		else{
+		} else {
 			throw new RuntimeException("费用明细已生成账单");
 		}
 		price = amount;
@@ -8240,6 +8259,59 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		return R.success("操作成功!");
 	}
 
+	@Override
+	public R checkAgencyOrder(Order order) {
+		Order salesOrder = baseMapper.selectById(order.getId());
+		if (salesOrder.getStatus() != 0) {
+			throw new SecurityException("订单已开启审核,请勿重复提交");
+		}
+		//审批数据
+		AuditProecessDTO auditProecessDTO = new AuditProecessDTO();
+		//获取审批级次
+		List<AuditPathsLevels> auditPathsLevels = iCheckClient.listLevelsByActId(14, "status");
+		// 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
+		AuditPathsActs pathsActs = iCheckClient.getActsByActId(14, "status");
+		auditProecessDTO.setProcessType("代理订单审批");
+		salesOrder.setStatus(1);
+		//修改单据状态
+		salesOrder.setOrderStatus(OrderStatusEnum.SUBMIT.getType());
+		salesOrder.setCheckDate(new Date());
+		// 没开启审批流直接走 通过流程
+		if (pathsActs == null || pathsActs.getIsEnable() == 2) {
+			throw new SecurityException("当前租户未查询到审批流配置");
+		} else {
+			if (CollectionUtils.isEmpty(auditPathsLevels)) {
+				throw new SecurityException("开启审批失败:未查询到审批信息");
+			}
+			// 绑定审核类型
+			auditProecessDTO.setCheckType("DLDD");
+			// 追加跳转路由url
+			auditProecessDTO.setUrl(order.getUrl());
+			auditProecessDTO.setPageStatus(order.getPageStatus());
+			auditProecessDTO.setPageLabel(order.getPageLabel());
+			//审批数据
+			auditProecessDTO.setMorderNo(salesOrder.getSysNo());
+			auditProecessDTO.setOrderQuantity(salesOrder.getMinOrder());
+			auditProecessDTO.setAmount(salesOrder.getOrderAmount());
+			auditProecessDTO.setOrderRemark(salesOrder.getOrderRemark());
+			auditProecessDTO.setCorpId(salesOrder.getCorpId());
+			auditProecessDTO.setPathsLevelsList(auditPathsLevels);
+			auditProecessDTO.setActId(1);
+			auditProecessDTO.setSrcBillId(salesOrder.getId());
+			auditProecessDTO.setBillId(salesOrder.getId());
+			auditProecessDTO.setBillNo(salesOrder.getSysNo());
+			auditProecessDTO.setSendUserId(AuthUtil.getUserId());
+			auditProecessDTO.setSendName(AuthUtil.getUserName());
+			auditProecessDTO.setSendTime(new Date());
+			R financeProcess = iCheckClient.createFinanceProcess(auditProecessDTO);
+			if (!financeProcess.isSuccess()) {
+				throw new SecurityException("操作失败,请联系管理员");
+			}
+		}
+		baseMapper.updateById(salesOrder);
+		return R.data(salesOrder);
+	}
+
 	/**
 	 * 状态统计
 	 * <p>
@@ -8397,10 +8469,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (order.getGenerate() == 1) {
 			throw new SecurityException("订单已生成销售订单请勿重复审批");
 		}
-		//修改采购合同信息
+		/*//修改采购合同信息
 		Order purchase = new Order();
 		purchase.setId(order.getSrcId());
-		purchase.setOrderStatus("平台审核通过");
+		purchase.setOrderStatus("审核通过");
 		baseMapper.updateOrderMessage(purchase);
 		//生成平台销售订单
 		Order market = new Order();
@@ -8501,13 +8573,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			//总提价
 			orderMessage.setCartonWeight(cartonWeight);
 		}
-		baseMapper.updateById(orderMessage);
+		baseMapper.updateById(orderMessage);*/
 		//修改代理订单信息
 		order.setStatus(3);
-		order.setGenerate(1);
 		order.setOrderStatus(OrderStatusEnum.PASS.getType());
 		baseMapper.updateById(order);
-
 	}
 
 	@Override
@@ -8525,15 +8595,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		}
 		//修改代理订单信息
 		order.setStatus(0);
-		order.setIsDeleted(1);
 		order.setOrderStatus(OrderStatusEnum.ENTERING.getType());
 		baseMapper.updateById(order);
-		//修改采购合同信息
+		/*//修改采购合同信息
 		Order indent = new Order();
 		indent.setId(order.getSrcId());
 		indent.setOrderStatus("平台拒绝接单");
 		indent.setGenerate(0);//平台拒绝,代理商可以再次提交采购合同
-		baseMapper.updateOrderMessage(indent);
+		baseMapper.updateOrderMessage(indent);*/
 	}
 
 	/**

+ 97 - 93
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java

@@ -357,9 +357,6 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 				.eq(PjBrandDesc::getTenantId, AuthUtil.getTenantId())
 				.eq(PjBrandDesc::getIsDeleted, 0)
 				.apply("find_in_set(cname,'" + brandName + "')"));
-			if (pjBrandDescList.isEmpty()) {
-				throw new RuntimeException("未查到品牌信息");
-			}
 			R<String> r = sysClient.getRoleIds(AuthUtil.getTenantId(), "客户");
 			for (CorpsDescImportExcel e : data) {
 				PjCorpsType corpsType = pjCorpsTypeList.stream().filter(item -> item.getCname().equals(e.getType())).findFirst().orElse(null);
@@ -399,20 +396,24 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 
 					corpsDesc.setCorpsTypeId(String.valueOf(corpsType.getId()));
 					corpsDesc.setCorpType("KH");
-					List<String> list = Arrays.asList(e.getBrandName().split(","));
-					List<PjBrandDesc> pjBrandDescs = pjBrandDescList.stream().filter(item -> list.contains(item.getCname())).distinct().collect(Collectors.toList());
-					if (!pjBrandDescs.isEmpty()) {
-						corpsDesc.setBrandName(pjBrandDescList.stream().map(PjBrandDesc::getCname).distinct().collect(Collectors.joining(",")));
-						StringBuilder brandIds = new StringBuilder();
-						for (PjBrandDesc item : pjBrandDescList) {
-							brandIds.append(item.getId()).append(",");
-						}
-						if (ObjectUtils.isNotNull(brandIds.toString())) {
-							corpsDesc.setBrandId(brandIds.substring(0, brandIds.length() - 1));
+					if (ObjectUtils.isNotNull(e.getBrandName())){
+						List<String> list = Arrays.asList(e.getBrandName().split(","));
+						if (pjBrandDescList.isEmpty()) {
+							List<PjBrandDesc> pjBrandDescs = pjBrandDescList.stream().filter(item -> list.contains(item.getCname())).distinct().collect(Collectors.toList());
+							if (!pjBrandDescs.isEmpty()) {
+								corpsDesc.setBrandName(pjBrandDescList.stream().map(PjBrandDesc::getCname).distinct().collect(Collectors.joining(",")));
+								StringBuilder brandIds = new StringBuilder();
+								for (PjBrandDesc item : pjBrandDescList) {
+									brandIds.append(item.getId()).append(",");
+								}
+								if (ObjectUtils.isNotNull(brandIds.toString())) {
+									corpsDesc.setBrandId(brandIds.substring(0, brandIds.length() - 1));
+								}
+								corpsDesc.setBrandName(pjBrandDescList.stream().map(PjBrandDesc::getCname).distinct().collect(Collectors.joining(",")));
+							} else {
+								throw new RuntimeException("未查到" + e.getBrandName() + "品牌信息");
+							}
 						}
-						corpsDesc.setBrandName(pjBrandDescList.stream().map(PjBrandDesc::getCname).distinct().collect(Collectors.joining(",")));
-					} else {
-						throw new RuntimeException("未查到" + e.getBrandName() + "品牌信息");
 					}
 					//名称相等视为重复数据
 					LambdaQueryWrapper<PjCorpsDesc> queryWrapper = new LambdaQueryWrapper<>();
@@ -426,38 +427,6 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 						corpsDesc.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 
 						baseMapper.insert(corpsDesc);
-
-						User userData = userClient.loginByAccount("", corpsDesc.getTel(), "4", AuthUtil.getTenantId(), appletsId);
-						if (ObjectUtils.isNull(userData)) {
-							//用户不存在,注册用户
-							User saveUser = new User();
-							saveUser.setAppletsId(appletsId);
-							saveUser.setTenantId(AuthUtil.getTenantId());
-							saveUser.setAccount(corpsDesc.getTel());
-							saveUser.setName(corpsDesc.getTel());
-							saveUser.setRealName(corpsDesc.getTel());
-							saveUser.setUserType(4);
-							saveUser.setPhone(corpsDesc.getTel());
-							saveUser.setDeptId(AuthUtil.getDeptId());
-							//获取注册用户类型
-							if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
-								saveUser.setRoleId(r.getData());
-							} else {
-								saveUser.setRoleId("");
-							}
-							saveUser.setPassword("123456");
-							R<Boolean> result = userClient.saveUser(saveUser);
-							if (!result.isSuccess()) {
-								throw new RuntimeException(result.getMsg());
-							}
-							R<UserInfo> resu = userClient.userInfo(AuthUtil.getTenantId(), corpsDesc.getTel(), UserEnum.WECHAT.getName());
-							if (resu.isSuccess()) {
-								userData = resu.getData().getUser();
-							} else {
-								throw new RuntimeException("创建用户失败");
-							}
-						}
-
 						PjCorpsTypeDesc middle = new PjCorpsTypeDesc();
 						middle.setCorpId(corpsDesc.getId());
 						middle.setCorpTypeId(corpsType.getId());
@@ -466,43 +435,75 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 						middle.setCreateUser(AuthUtil.getUserId());
 						middle.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 						corpsTypeDescMapper.insert(middle);
-						//保存客户联系人信息
-						PjCorpsAttn corpsAttn = new PjCorpsAttn();
-						if (ObjectUtils.isNotNull(userData)) {
-							long count = corpsAttnService.count(new LambdaQueryWrapper<PjCorpsAttn>()
-								.eq(PjCorpsAttn::getUserId, userData.getId())
-								.eq(PjCorpsAttn::getTel, corpsDesc.getTel())
-								.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
-								.eq(PjCorpsAttn::getIsDeleted, 0));
-							if (count > 0) {
-								throw new RuntimeException("手机号已存在,提交失败");
+						if (ObjectUtils.isNotNull(corpsDesc.getTel())){
+							User userData = userClient.loginByAccount("", corpsDesc.getTel(), "4", AuthUtil.getTenantId(), appletsId);
+							if (ObjectUtils.isNull(userData)) {
+								//用户不存在,注册用户
+								User saveUser = new User();
+								saveUser.setAppletsId(appletsId);
+								saveUser.setTenantId(AuthUtil.getTenantId());
+								saveUser.setAccount(corpsDesc.getTel());
+								saveUser.setName(corpsDesc.getTel());
+								saveUser.setRealName(corpsDesc.getTel());
+								saveUser.setUserType(4);
+								saveUser.setPhone(corpsDesc.getTel());
+								saveUser.setDeptId(AuthUtil.getDeptId());
+								//获取注册用户类型
+								if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+									saveUser.setRoleId(r.getData());
+								} else {
+									saveUser.setRoleId("");
+								}
+								saveUser.setPassword("123456");
+								R<Boolean> result = userClient.saveUser(saveUser);
+								if (!result.isSuccess()) {
+									throw new RuntimeException(result.getMsg());
+								}
+								R<UserInfo> resu = userClient.userInfo(AuthUtil.getTenantId(), corpsDesc.getTel(), UserEnum.WECHAT.getName());
+								if (resu.isSuccess()) {
+									userData = resu.getData().getUser();
+								} else {
+									throw new RuntimeException("创建用户失败");
+								}
 							}
-							corpsAttn.setUserId(userData.getId());
+							//保存客户联系人信息
+							PjCorpsAttn corpsAttn = new PjCorpsAttn();
+							if (ObjectUtils.isNotNull(userData)) {
+								long count = corpsAttnService.count(new LambdaQueryWrapper<PjCorpsAttn>()
+									.eq(PjCorpsAttn::getUserId, userData.getId())
+									.eq(PjCorpsAttn::getTel, corpsDesc.getTel())
+									.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+									.eq(PjCorpsAttn::getIsDeleted, 0));
+								if (count > 0) {
+									throw new RuntimeException("手机号已存在,提交失败");
+								}
+								corpsAttn.setUserId(userData.getId());
+							}
+							corpsAttn.setCname(corpsDesc.getAttn());
+							corpsAttn.setTel(corpsDesc.getTel());
+							corpsAttn.setTenantId(AuthUtil.getTenantId());
+							corpsAttn.setPid(corpsDesc.getId());
+							corpsAttn.setCreateTime(new Date());
+							corpsAttn.setTenantId(AuthUtil.getTenantId());
+							corpsAttn.setCreateUser(AuthUtil.getUserId());
+							corpsAttn.setSalesCompanyId(salesCompanyId);
+							corpsAttn.setSalesCompanyName(salesCompanyName);
+							corpsAttnService.save(corpsAttn);
+
+							//保存客户地址信息
+							PjCorpsAddr corpsAddr = new PjCorpsAddr();
+							corpsAddr.setContacts(corpsDesc.getAttn());
+							corpsAddr.setTel(corpsDesc.getTel());
+							corpsAddr.setBelongtoarea(corpsDesc.getAddr());
+							corpsAddr.setDetailedAddress(corpsDesc.getDetails());
+							corpsAddr.setTenantId(AuthUtil.getTenantId());
+							corpsAddr.setPid(corpsDesc.getId());
+							corpsAddr.setCreateTime(new Date());
+							corpsAddr.setTenantId(AuthUtil.getTenantId());
+							corpsAddr.setCreateUser(AuthUtil.getUserId());
+							corpsAddr.setDefaultAddres("1");
+							corpsAddrService.save(corpsAddr);
 						}
-						corpsAttn.setCname(corpsDesc.getAttn());
-						corpsAttn.setTel(corpsDesc.getTel());
-						corpsAttn.setTenantId(AuthUtil.getTenantId());
-						corpsAttn.setPid(corpsDesc.getId());
-						corpsAttn.setCreateTime(new Date());
-						corpsAttn.setTenantId(AuthUtil.getTenantId());
-						corpsAttn.setCreateUser(AuthUtil.getUserId());
-						corpsAttn.setSalesCompanyId(salesCompanyId);
-						corpsAttn.setSalesCompanyName(salesCompanyName);
-						corpsAttnService.save(corpsAttn);
-
-						//保存客户地址信息
-						PjCorpsAddr corpsAddr = new PjCorpsAddr();
-						corpsAddr.setContacts(corpsDesc.getAttn());
-						corpsAddr.setTel(corpsDesc.getTel());
-						corpsAddr.setBelongtoarea(corpsDesc.getAddr());
-						corpsAddr.setDetailedAddress(corpsDesc.getDetails());
-						corpsAddr.setTenantId(AuthUtil.getTenantId());
-						corpsAddr.setPid(corpsDesc.getId());
-						corpsAddr.setCreateTime(new Date());
-						corpsAddr.setTenantId(AuthUtil.getTenantId());
-						corpsAddr.setCreateUser(AuthUtil.getUserId());
-						corpsAddr.setDefaultAddres("1");
-						corpsAddrService.save(corpsAddr);
 					} else {
 						corpsDesc.setId(selectOne.getId());
 						corpsDesc.setUpdateTime(new Date());
@@ -609,16 +610,20 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 							.eq(PjCorpsAttn::getPid, corpsDesc.getId())
 							.eq(PjCorpsAttn::getIsDeleted, 0);
 						PjCorpsAttn corpsAttn = corpsAttnService.getOne(corpsAttnLambdaQueryWrapper);
-
-						corpsAttn.setPid(corpsDesc.getId());
-						corpsAttn.setCname(e.getAttnCname());
-						corpsAttn.setTel(e.getAttnTel());
-						if (corpsAttn.getId() == null) {
-							corpsAttn.setTenantId(AuthUtil.getTenantId());
-							corpsAttn.setCreateTime(new Date());
-							corpsAttn.setCreateUser(AuthUtil.getUserId());
-							corpsAttnService.save(corpsAttn);
+						if (corpsAttn == null) {
+							if (ObjectUtils.isNotNull(e.getAttnCname())){
+								corpsAttn = new PjCorpsAttn();
+								corpsAttn.setPid(corpsDesc.getId());
+								corpsAttn.setCname(e.getAttnCname());
+								corpsAttn.setTel(e.getAttnTel());
+								corpsAttn.setTenantId(AuthUtil.getTenantId());
+								corpsAttn.setCreateTime(new Date());
+								corpsAttn.setCreateUser(AuthUtil.getUserId());
+								corpsAttnService.save(corpsAttn);
+							}
 						} else {
+							corpsAttn.setCname(e.getAttnCname());
+							corpsAttn.setTel(e.getAttnTel());
 							corpsAttn.setTenantId(AuthUtil.getTenantId());
 							corpsAttn.setUpdateTime(new Date());
 							corpsAttn.setUpdateUser(AuthUtil.getUserId());
@@ -628,7 +633,6 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 
 					//保存地址
 					if (ObjectUtil.isEmpty(e.getDetailedAddress())) {
-
 						if (ObjectUtil.isNotEmpty(e.getDefaultAddres()) && "是".equals(e.getDefaultAddres())) {
 							LambdaQueryWrapper<PjCorpsAddr> corpsAttnLambdaQueryWrapper = new LambdaQueryWrapper<>();
 							corpsAttnLambdaQueryWrapper.eq(PjCorpsAddr::getTenantId, AuthUtil.getTenantId())

+ 9 - 5
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java

@@ -2306,11 +2306,15 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						throw new RuntimeException("请选择自有库");
 					}
 				}else{
-					if ("0".equals(ship.getWhetherFinancing())){
-						throw new RuntimeException("请选择融资库");
-					}/*else{
-						throw new RuntimeException("请选择自有库");
-					}*/
+					if ("1".equals(ship.getWhetherFinancing())){
+						if ("0".equals(storageDesc.getWhetherFinancing())){
+							throw new RuntimeException("请选择融资库");
+						}
+					}else{
+						if ("1".equals(storageDesc.getWhetherFinancing())){
+							throw new RuntimeException("请选择自有库");
+						}
+					}
 				}
 			}else{
 				if ("1".equals(ship.getWhetherFinancing())){

+ 1 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/feign/StockGoodsClient.java

@@ -347,6 +347,7 @@ public class StockGoodsClient implements IStockGoodsClient {
 	@Override
 	public List<StockGoods> selectStockList(StockGoods stockGoods) {
 		stockGoods.setTenantId(AuthUtil.getTenantId());
+		stockGoods.setIsDeleted(0);
 		QueryWrapper<StockGoods> queryWrapper = Condition.getQueryWrapper(stockGoods);
 		List<StockGoods> list = stockGoodsService.list(queryWrapper);
 		list.forEach(e -> {