Browse Source

2023年7月18日17:32:42

纪新园 2 years ago
parent
commit
a8e525479b

+ 5 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/enums/OrderTypeEnum.java

@@ -88,6 +88,11 @@ public enum OrderTypeEnum {
 	TOBESHIPPEDOUT("待出库"),
 	TOBESHIPPEDOUT("待出库"),
 
 
 	/**
 	/**
+	 * 撤销工单
+	 */
+	REVOKEWORKORDER("撤销工单"),
+
+	/**
 	 * 入库工单状态待入库
 	 * 入库工单状态待入库
 	 */
 	 */
 	TREATWAREHOUSING("待入库"),
 	TREATWAREHOUSING("待入库"),

+ 18 - 12
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -161,7 +161,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 	@Override
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	@Transactional(rollbackFor = Exception.class)
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
-	public R submitDelivery(Delivery delivery) {
+	public R<Delivery> submitDelivery(Delivery delivery) {
 		String status = null;//订单状态
 		String status = null;//订单状态
 		if ("681169".equals(AuthUtil.getTenantId())) {
 		if ("681169".equals(AuthUtil.getTenantId())) {
 			if (ObjectUtil.isEmpty(delivery.getSalesCompany())) {
 			if (ObjectUtil.isEmpty(delivery.getSalesCompany())) {
@@ -493,10 +493,10 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 					} else {
 					} else {
 						orderTemp.setOrderStatus("已完成");
 						orderTemp.setOrderStatus("已完成");
 					}
 					}
+					orderTemp.setActualDeliveryDate(date);
 				}
 				}
 				orderTemp.setDeliverQuantity(delivery.getTotalQuantity());
 				orderTemp.setDeliverQuantity(delivery.getTotalQuantity());
 				orderTemp.setDeliverTime(date);
 				orderTemp.setDeliverTime(date);
-				orderTemp.setActualDeliveryDate(date);
 			} else {
 			} else {
 				if ("681169".equals(AuthUtil.getTenantId())) {
 				if ("681169".equals(AuthUtil.getTenantId())) {
 					orderTemp.setReceivingStatus("已收货");
 					orderTemp.setReceivingStatus("已收货");
@@ -507,8 +507,8 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 					} else {
 					} else {
 						orderTemp.setOrderStatus("待发货");
 						orderTemp.setOrderStatus("待发货");
 					}
 					}
+					orderTemp.setActualDeliveryDate(null);
 				}
 				}
-				orderTemp.setActualDeliveryDate(null);
 				orderTemp.setDeliverQuantity(BigDecimal.ZERO);
 				orderTemp.setDeliverQuantity(BigDecimal.ZERO);
 			}
 			}
 			baseMapper.updateById(delivery);
 			baseMapper.updateById(delivery);
@@ -762,12 +762,6 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 			.eq(DeliveryItems::getIsDeleted, 0);
 			.eq(DeliveryItems::getIsDeleted, 0);
 		List<DeliveryItems> deliveryItems = deliveryItemsMapper.selectList(deliveryItemsLambdaQueryWrapper);
 		List<DeliveryItems> deliveryItems = deliveryItemsMapper.selectList(deliveryItemsLambdaQueryWrapper);
 
 
-		BigDecimal pricetotal = deliveryItems.stream().map(DeliveryItems::getDeliveryAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-		//明细总采购价
-		//String acoount = CollectionUtils.isEmpty(deliveryItems) ? "0" : pricetotal.toString();
-		//采购金额
-		String acoount = select.getPurchaseAmount().toString();
-
 		select.setDeliveryItemsList(deliveryItems);
 		select.setDeliveryItemsList(deliveryItems);
 
 
 		String corpName = null;
 		String corpName = null;
@@ -805,7 +799,18 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 		baseMapper.updateById(select);
 		baseMapper.updateById(select);
 
 
 		//保存收货单主表 和 收货单明细
 		//保存收货单主表 和 收货单明细
-		this.submitDelivery(select);
+		R<Delivery> deliveryR = this.submitDelivery(select);
+		BigDecimal pricetotal = deliveryItems.stream().map(DeliveryItems::getDeliveryAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+		//明细总采购价
+		//String acoount = CollectionUtils.isEmpty(deliveryItems) ? "0" : pricetotal.toString();
+		//采购金额
+		String acoount = "";
+		if (deliveryR.isSuccess()){
+			acoount = deliveryR.getData().getPurchaseAmount().toString();
+		}else{
+			acoount = select.getPurchaseAmount().toString();
+		}
+
 		//验证收货单库存与传入库存是否一致,如果一直则修改库存
 		//验证收货单库存与传入库存是否一致,如果一直则修改库存
 		List<DeliveryItems> deliveryItemsList = select.getDeliveryItemsList();
 		List<DeliveryItems> deliveryItemsList = select.getDeliveryItemsList();
 		//从缓存中获得库存
 		//从缓存中获得库存
@@ -1157,6 +1162,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 		String finalWareHouse = wareHouse;
 		String finalWareHouse = wareHouse;
 		try {
 		try {
 			// 启动任务并提交给线程池
 			// 启动任务并提交给线程池
+			String finalAcoount = acoount;
 			Future<?> future = executor.submit(new Callable<Void>() {
 			Future<?> future = executor.submit(new Callable<Void>() {
 				@Override
 				@Override
 				public Void call() throws Exception {
 				public Void call() throws Exception {
@@ -1169,7 +1175,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 						JdTenant jdTenant = getJdTenant(accountName, select.getTenantId());
 						JdTenant jdTenant = getJdTenant(accountName, select.getTenantId());
 						if (jdTenant != null) {
 						if (jdTenant != null) {
 							//测试账套-工厂发货生成凭证
 							//测试账套-工厂发货生成凭证
-							voucher(finalBrand, select, accountName, finalCorpName, finalCorpNumber, finalWareHouse, acoount, orderNo);
+							voucher(finalBrand, select, accountName, finalCorpName, finalCorpNumber, finalWareHouse, finalAcoount, orderNo);
 						}
 						}
 					} catch (Exception e) {
 					} catch (Exception e) {
 						System.out.println(e.getMessage());
 						System.out.println(e.getMessage());
@@ -1191,7 +1197,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 	public void voucher(String brand, Delivery select, String accountName, String copsName, String corpNumber, String warehouse, String acoount, String orderNo) {
 	public void voucher(String brand, Delivery select, String accountName, String copsName, String corpNumber, String warehouse, String acoount, String orderNo) {
 		try {
 		try {
 			//测试账套-工厂发货生成凭证
 			//测试账套-工厂发货生成凭证
-			Delivery delivery = this.testTakeGoodsSaveVoucher(brand, select, accountName, copsName, corpNumber, warehouse, "0.00", orderNo);
+			Delivery delivery = this.testTakeGoodsSaveVoucher(brand, select, accountName, copsName, corpNumber, warehouse, acoount, orderNo);
 			if (ObjectUtils.isNotNull(delivery)) {
 			if (ObjectUtils.isNotNull(delivery)) {
 				delivery.setVoucherStatus("1");
 				delivery.setVoucherStatus("1");
 				baseMapper.updateById(delivery);
 				baseMapper.updateById(delivery);

+ 30 - 16
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/config/MyBatisPlusConfig.java

@@ -7,37 +7,51 @@ import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
 import com.baomidou.mybatisplus.extension.plugins.inner.*;
 import com.baomidou.mybatisplus.extension.plugins.inner.*;
 import net.sf.jsqlparser.expression.Expression;
 import net.sf.jsqlparser.expression.Expression;
 import net.sf.jsqlparser.expression.StringValue;
 import net.sf.jsqlparser.expression.StringValue;
+import org.springblade.core.mp.config.MybatisPlusConfiguration;
+import org.springblade.core.mp.intercept.QueryInterceptor;
+import org.springblade.core.mp.plugins.BladePaginationInterceptor;
+import org.springblade.core.mp.props.MybatisPlusProperties;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springframework.beans.factory.ObjectProvider;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.core.annotation.AnnotationAwareOrderComparator;
 
 
 /**
 /**
  * @author :jixinyuan
  * @author :jixinyuan
  * @date : 2023/7/4
  * @date : 2023/7/4
  */
  */
 @Configuration
 @Configuration
-public class MyBatisPlusConfig {
+public class MyBatisPlusConfig extends MybatisPlusConfiguration {
 
 
 
 
 	@Bean
 	@Bean
-	public MybatisPlusInterceptor MybatisPlusInterceptor() {
-		MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
-		TenantLineHandler tenantLineHandler = new TenantLineHandler() {
-			@Override
-			public Expression getTenantId() {
-				return new StringValue(Func.toStr(AuthUtil.getTenantId(), "000000"));
-			}
-		};
-		mybatisPlusInterceptor.addInnerInterceptor(new TenantLineInnerInterceptor(tenantLineHandler));//自动填充租户插件
-		mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());//乐观锁插件
-		mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//自动分页插件
-		mybatisPlusInterceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());//防止全表更新或删除
-		return mybatisPlusInterceptor;
+	public MybatisPlusProperties mybatisPlusProperties() {
+		return  new MybatisPlusProperties();
 	}
 	}
 
 
 	@Bean
 	@Bean
-	public ConfigurationCustomizer configurationCustomizer() {
-		return configuration -> configuration.setUseDeprecatedExecutor(false);
+	@ConditionalOnMissingBean({MybatisPlusInterceptor.class})
+	public MybatisPlusInterceptor mybatisPlusInterceptor(ObjectProvider<QueryInterceptor[]> queryInterceptors, TenantLineInnerInterceptor tenantLineInnerInterceptor) {
+		MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+		if (this.mybatisPlusProperties().getTenantMode()) {
+			interceptor.addInnerInterceptor(tenantLineInnerInterceptor);
+		}
+		interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
+		BladePaginationInterceptor paginationInterceptor = new BladePaginationInterceptor();
+		QueryInterceptor[] queryInterceptorArray = (QueryInterceptor[]) queryInterceptors.getIfAvailable();
+		if (ObjectUtil.isNotEmpty(queryInterceptorArray)) {
+			AnnotationAwareOrderComparator.sort(queryInterceptorArray);
+			paginationInterceptor.setQueryInterceptors(queryInterceptorArray);
+		}
+
+		paginationInterceptor.setMaxLimit(this.mybatisPlusProperties().getPageLimit());
+		paginationInterceptor.setOverflow(this.mybatisPlusProperties().getOverflow());
+		paginationInterceptor.setOptimizeJoin(this.mybatisPlusProperties().getOptimizeJoin());
+		interceptor.addInnerInterceptor(paginationInterceptor);
+		return interceptor;
 	}
 	}
 }
 }

+ 8 - 3
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/feign/PJOrderClient.java

@@ -42,11 +42,16 @@ public class PJOrderClient implements IPJOrderClient {
 
 
 	@Override
 	@Override
 	public R<List<PjOrder>> getByOrder(PjOrder order) {
 	public R<List<PjOrder>> getByOrder(PjOrder order) {
-		return R.data(orderService.list(new LambdaQueryWrapper<PjOrder>()
+		LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<PjOrder>()
 			.eq(PjOrder::getSrcOrdNo, order.getSrcOrdNo())
 			.eq(PjOrder::getSrcOrdNo, order.getSrcOrdNo())
-			.eq(PjOrder::getTenantId, order.getTenantId())
 			.eq(PjOrder::getActualPaymentStatus, 1)
 			.eq(PjOrder::getActualPaymentStatus, 1)
-			.eq(PjOrder::getIsDeleted, 0)));
+			.eq(PjOrder::getIsDeleted, 0);
+			if (ObjectUtils.isNotNull(AuthUtil.getTenantId())){
+				lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId());
+			}else{
+				lambdaQueryWrapper.eq(PjOrder::getTenantId, order.getTenantId());
+			}
+		return R.data(orderService.list(lambdaQueryWrapper));
 	}
 	}
 
 
 	@Override
 	@Override

+ 13 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/controller/ShipController.java

@@ -313,6 +313,19 @@ public class ShipController extends BladeController {
 	}
 	}
 
 
 	/**
 	/**
+	 * 撤销入出库工单
+	 */
+	@PostMapping("/revokeWorkOrder")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R revokeWorkOrder(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		if (ObjectUtil.isEmpty(ids)) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		return shipService.revokeWorkOrder(ids);
+	}
+
+	/**
 	 * 入库明细导入
 	 * 入库明细导入
 	 */
 	 */
 	@PostMapping("/import-item")
 	@PostMapping("/import-item")

+ 8 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/IShipService.java

@@ -72,6 +72,14 @@ public interface IShipService extends IService<PjShip> {
 	R outboundWorkOrder(String ids);
 	R outboundWorkOrder(String ids);
 
 
 	/**
 	/**
+	 * 撤销入出库工单
+	 *
+	 * @param ids
+	 * @return
+	 */
+	R revokeWorkOrder(String ids);
+
+	/**
 	 * 出库完成
 	 * 出库完成
 	 *
 	 *
 	 * @param ship
 	 * @param ship

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

@@ -68,6 +68,7 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
 import java.util.Objects;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * 配件收发货表 服务实现类
  * 配件收发货表 服务实现类
@@ -345,7 +346,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				if (!save.isSuccess()) {
 				if (!save.isSuccess()) {
 					throw new SecurityException("发送消息失败");
 					throw new SecurityException("发送消息失败");
 				}
 				}
-			}else{
+			} else {
 				//给角色为派工的人发送消息
 				//给角色为派工的人发送消息
 				R<String> clientDeptIds = sysClient.getRoleIds(AuthUtil.getTenantId(), "库管");
 				R<String> clientDeptIds = sysClient.getRoleIds(AuthUtil.getTenantId(), "库管");
 				if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
 				if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
@@ -380,6 +381,31 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		return R.success("操作成功");
 		return R.success("操作成功");
 	}
 	}
 
 
+	@Override
+	public R revokeWorkOrder(String ids) {
+		List<Long> shipIds = Func.toLongList(ids);
+		for (Long id : shipIds) {
+			//获得出库任务数据
+			List<PjShip> pjShipList = baseMapper.selectList(new LambdaQueryWrapper<PjShip>()
+				.eq(PjShip::getTenantId, AuthUtil.getTenantId())
+				.eq(PjShip::getIsDeleted, 0)
+				.eq(PjShip::getTaskId, id)
+				.and(i-> i.eq(PjShip::getStatusName, OrderTypeEnum.TOBESHIPPEDOUT.getType())
+				.or().eq(PjShip::getStatusName, OrderTypeEnum.TREATWAREHOUSING.getType())));
+			if (ObjectUtil.isEmpty(pjShipList)) {
+				throw new RuntimeException("数据异常 请联系管理员");
+			}
+			List<Long> itemId = pjShipList.stream().map(PjShip::getId).collect(Collectors.toList());
+			baseMapper.deleteBatchIds(itemId);
+			PjShip rwShip = new PjShip();
+			//修改出库任务状态
+			rwShip.setStatusName("未完成");
+			rwShip.setId(id);
+			baseMapper.updateById(rwShip);
+		}
+		return R.success("操作成功");
+	}
+
 	/**
 	/**
 	 * 出库完成
 	 * 出库完成
 	 *
 	 *
@@ -723,7 +749,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				if (!save.isSuccess()) {
 				if (!save.isSuccess()) {
 					throw new SecurityException("发送消息失败");
 					throw new SecurityException("发送消息失败");
 				}
 				}
-			}else{
+			} else {
 				//给角色为派工的人发送消息
 				//给角色为派工的人发送消息
 				R<String> clientDeptIds = sysClient.getRoleIds(AuthUtil.getTenantId(), "库管");
 				R<String> clientDeptIds = sysClient.getRoleIds(AuthUtil.getTenantId(), "库管");
 				if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
 				if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {

+ 26 - 1
blade-service/trade-finance/src/main/java/org/springblade/finance/controller/SettlementController.java

@@ -397,6 +397,20 @@ public class SettlementController extends BladeController {
 	}
 	}
 
 
 	/**
 	/**
+	 * 撤销申请货款(申请/付费)
+	 */
+	@PostMapping("/revokeApply")
+	@ApiOperationSupport(order = 8)
+	@RepeatSubmit
+	@ApiOperation(value = "请货款(收费/付费)", notes = "传入Finance_items")
+	public R revokeApply(@RequestBody ApplyDTO dto) throws Exception {
+		if (CollectionUtils.isEmpty(dto.getItemsList())) {
+			throw new SecurityException("传入数据不能为空");
+		}
+		return R.data(settlementService.revokeApply(dto.getItemsList(), dto.getBillType(), dto.getUrl(), dto.getPageStatus(), dto.getPageLabel(), dto.getCheckType(), dto.getTradeType()));
+	}
+
+	/**
 	 * 批量申请货款(申请/付费)
 	 * 批量申请货款(申请/付费)
 	 */
 	 */
 	@PostMapping("/applyList")
 	@PostMapping("/applyList")
@@ -432,7 +446,7 @@ public class SettlementController extends BladeController {
 
 
 
 
 	/**
 	/**
-	 * 销售-收款结算
+	 * 销售-收款结算-生成-销售收费账单
 	 */
 	 */
 	@PostMapping("/paymentApply")
 	@PostMapping("/paymentApply")
 	@ApiOperationSupport(order = 8)
 	@ApiOperationSupport(order = 8)
@@ -442,6 +456,17 @@ public class SettlementController extends BladeController {
 		return R.success("操作成功");
 		return R.success("操作成功");
 	}
 	}
 
 
+	/**
+	 * 撤销付销售-收款结算-生成-销售收费账单
+	 */
+	@PostMapping("/revokePaymentApply")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "撤销付销售-收款结算-生成-销售收费账单", notes = "传入销售申请对象")
+	public R revokePaymentApply(@RequestBody ApplyDTO dto) {
+		settlementService.revokePaymentApply(dto.getItemsList(), dto.getBillType(), dto.getBelongCompany(), dto.getTradeType());
+		return R.success("操作成功");
+	}
+
 	@PostMapping("/getById")
 	@PostMapping("/getById")
 	public R<Settlement> getById(@RequestParam Long id) {
 	public R<Settlement> getById(@RequestParam Long id) {
 		return R.data(settlementService.getById(id));
 		return R.data(settlementService.getById(id));

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

@@ -56,12 +56,16 @@ public interface ISettlementService extends IService<Settlement> {
 
 
 	Settlement apply(List<Items> itemsList, String billType, String url, String pageStatus, String pageLabel, String checkType, String tradeType) throws Exception;
 	Settlement apply(List<Items> itemsList, String billType, String url, String pageStatus, String pageLabel, String checkType, String tradeType) throws Exception;
 
 
+	Settlement revokeApply(List<Items> itemsList, String billType, String url, String pageStatus, String pageLabel, String checkType, String tradeType) throws Exception;
+
 	void applyList(List<Items> itemsList, String billType, String url, String pageStatus, String pageLabel, String checkType);
 	void applyList(List<Items> itemsList, String billType, String url, String pageStatus, String pageLabel, String checkType);
 
 
 	void check(Settlement settlement);
 	void check(Settlement settlement);
 
 
 	void paymentApply(List<Items> itemsList, String billType, String belongCompany,String tradeType);
 	void paymentApply(List<Items> itemsList, String billType, String belongCompany,String tradeType);
 
 
+	void revokePaymentApply(List<Items> itemsList, String billType, String belongCompany,String tradeType);
+
 	SettlementDTO saveOrEdit(SettlementDTO settlementDTO);
 	SettlementDTO saveOrEdit(SettlementDTO settlementDTO);
 
 
 	boolean removeSettlement(List<Long> idList);
 	boolean removeSettlement(List<Long> idList);

+ 76 - 0
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -1324,6 +1324,27 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 	}
 	}
 
 
 	@Override
 	@Override
+	public Settlement revokeApply(List<Items> itemsList, String billType, String url, String pageStatus, String pageLabel, String checkType, String tradeType) throws Exception {
+		Settlement settlement = baseMapper.selectOne(new LambdaQueryWrapper<Settlement>()
+			.eq(Settlement::getTenantId, AuthUtil.getTenantId())
+			.eq(Settlement::getIsDeleted, 0)
+			.eq(Settlement::getBillType, billType)
+			.eq(Settlement::getSrcBillId, itemsList.get(0).getSrcParentId())
+			.eq(Settlement::getBillNo, itemsList.get(0).getBillNo())
+			.eq(Settlement::getSettlementType, 1)
+			.eq(Settlement::getDc, "c")
+			.eq(Settlement::getSrcOrderno, itemsList.get(0).getSrcOrderno())
+			.eq(Settlement::getSrcBillId, itemsList.get(0).getSrcParentId())
+		);
+		if (ObjectUtils.isNotNull(settlement) && !settlement.getFinanceStatus().equals("待结算")) {
+			throw new RuntimeException("付费申请已结算,撤销失败");
+		} else {
+			baseMapper.deleteById(settlement.getId());
+		}
+		return settlement;
+	}
+
+	@Override
 	@Transactional
 	@Transactional
 	public void applyList(List<Items> itemsList, String billType, String url, String pageStatus, String pageLabel, String checkType) {
 	public void applyList(List<Items> itemsList, String billType, String url, String pageStatus, String pageLabel, String checkType) {
 		Settlement settlement = new Settlement();
 		Settlement settlement = new Settlement();
@@ -1494,6 +1515,61 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 	}
 	}
 
 
 	@Override
 	@Override
+	public void revokePaymentApply(List<Items> itemsList, String billType, String belongCompany, String tradeType) {
+		itemsList.forEach(e -> {
+			Acc details = accMapper.selectOne(new LambdaQueryWrapper<Acc>().eq(Acc::getIsDeleted, 0)
+				.eq(Acc::getTenantId, AuthUtil.getTenantId())
+				.eq(Acc::getSrcFeesId, e.getSrcFeesId()));
+			if (ObjectUtils.isNotNull(details) && !details.getSettlementAmount().equals(new BigDecimal("0.00"))) {
+				throw new RuntimeException("账单已结算,撤销失败");
+			} else {
+				accMapper.deleteById(details.getId());
+			}
+			Acc acc = new Acc();
+			BeanUtils.copyProperties(e, acc);
+			String tradeType_ = "";
+			if (ObjectUtils.isNull(tradeType)) {
+				tradeType_ = e.getTradeType();
+			} else {
+				tradeType_ = tradeType;
+			}
+			if (!tradeType_.equals(OrderTypeEnum.WOOD_HARVESTING_CLOUD.getType())) {
+				if ((StringUtils.isBlank(tradeType_)) || (StringUtils.isNotBlank(tradeType_)) && !tradeType_.equals(OrderTypeEnum.DOMESTIC.getType())) {
+					if (e.getSrcType() == 2) {
+						OrderFees orderFees = orderFeesClient.getById(e.getSrcFeesId());
+						if (orderFees == null) {
+							throw new SecurityException("未查到原单据的费用明细,无法修改状态");
+						}
+						orderFees.setSubmitPay(0);
+						orderFees.setIsCheck(0);
+						R submit = orderFeesClient.submit(orderFees);
+						if (!submit.isSuccess()) {
+							throw new SecurityException("财务-修改原单据的费用明细错误");
+						}
+					} else {
+						if (ObjectUtils.isNotNull(e.getSrcFeesId())) {
+							OrderItems client = orderItemsClient.getById(e.getSrcFeesId());
+							if (client == null) {
+								throw new SecurityException("未查到原单据的商品明细,无法修改状态");
+							}
+							client.setSubmitPay(0);
+							R submit = orderItemsClient.submit(client);
+							if (!submit.isSuccess()) {
+								throw new SecurityException("财务-修改原单据的商品明细错误");
+							}
+						} else {
+							R submit = orderItemsClient.submitPay(e.getSrcParentId());
+							if (!submit.isSuccess()) {
+								throw new SecurityException("财务-修改原单据的商品明细错误");
+							}
+						}
+					}
+				}
+			}
+		});
+	}
+
+	@Override
 	@Transactional
 	@Transactional
 	public SettlementDTO saveOrEdit(SettlementDTO settlementDTO) {
 	public SettlementDTO saveOrEdit(SettlementDTO settlementDTO) {