Browse Source

2022年11月30 18:44

wangzhuo 3 years ago
parent
commit
888148c3a8

+ 24 - 7
blade-service-api/blade-box-tube-api/src/main/java/org/springblade/box/tube/entity/DeclareCustomsFees.java

@@ -155,12 +155,6 @@ public class DeclareCustomsFees implements Serializable {
 	private Date settlementDate;
 
 	/**
-	 * 计价单位
-	 */
-	@ApiModelProperty(value = "计价单位")
-	private String unit;
-
-	/**
 	 * 汇率
 	 */
 	@ApiModelProperty(value = "汇率")
@@ -170,6 +164,29 @@ public class DeclareCustomsFees implements Serializable {
 	 * 客户id
 	 */
 	@ApiModelProperty(value = "客户id")
-	private Integer corpId;
+	private Long corpId;
+
+	/**
+	 * 生成贷款
+	 */
+	@ApiModelProperty(value = "生成贷款")
+	private Integer submitPay;
+
+	/**
+	 * 是否自动生成
+	 */
+	@ApiModelProperty(value = "是否自动生成")
+	private String autoGenerate;
+
+	/**
+	 * 生成来源
+	 */
+	@ApiModelProperty(value = "生成来源")
+	private String generationSource;
 
+	/**
+	 * 计价单位
+	 */
+	@ApiModelProperty(value = "计价单位")
+	private String unit;
 }

+ 16 - 0
blade-service-api/blade-box-tube-api/src/main/java/org/springblade/box/tube/feign/IDeclareCustomsClient.java

@@ -1,10 +1,12 @@
 package org.springblade.box.tube.feign;
 
 import org.springblade.box.tube.entity.DeclareCustoms;
+import org.springblade.box.tube.entity.DeclareCustomsFees;
 import org.springblade.core.tool.api.R;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
 /**
@@ -20,6 +22,8 @@ public interface IDeclareCustomsClient {
 	String DECLARE_CUSTOMS_PASS_CHECK = APP_PREFIX + "/passCheck";
 	String DECLARE_CUSTOMS_UNDER_REVIEW = APP_PREFIX + "/underReview";
 	String DECLARE_CUSTOMS_PASS_CANCEL = APP_PREFIX + "/passCancel";
+	String DECLARE_CUSTOMS_FEES_BY_ID = APP_PREFIX + "/feesById";
+	String UPDATE_DECLARE_CUSTOMS_FEES = APP_PREFIX + "/updateDeclareCustomsFees";
 
 	@GetMapping(GET_BY_ID)
 	DeclareCustoms getById(@RequestParam("id") Long id);
@@ -47,4 +51,16 @@ public interface IDeclareCustomsClient {
 	 */
 	@PostMapping(DECLARE_CUSTOMS_PASS_CANCEL)
 	R passCancel(@RequestParam("id") Long id);
+
+	/**
+	 * 通过id查询费用明细
+	 */
+	@PostMapping(DECLARE_CUSTOMS_FEES_BY_ID)
+	R<DeclareCustomsFees> getDeclareCustomsFeesById(@RequestParam("id") Long id);
+
+	/**
+	 * 修改费用明细
+	 */
+	@PostMapping(UPDATE_DECLARE_CUSTOMS_FEES)
+	R updateDeclareCustomsFees(@RequestBody DeclareCustomsFees declareCustomsFees);
 }

+ 20 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/feign/DeclareCustomsClient.java

@@ -2,6 +2,8 @@ package org.springblade.box.tube.feign;
 
 import lombok.AllArgsConstructor;
 import org.springblade.box.tube.entity.DeclareCustoms;
+import org.springblade.box.tube.entity.DeclareCustomsFees;
+import org.springblade.box.tube.service.IDeclareCustomsFeesService;
 import org.springblade.box.tube.service.IDeclareCustomsService;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
@@ -16,6 +18,8 @@ public class DeclareCustomsClient implements IDeclareCustomsClient{
 
 	private final IDeclareCustomsService declareCustomsService;
 
+	private final IDeclareCustomsFeesService feesService;
+
 	@Override
 	public DeclareCustoms getById(Long id) {
 		return declareCustomsService.getById(id);
@@ -50,4 +54,20 @@ public class DeclareCustomsClient implements IDeclareCustomsClient{
 	public R passCancel(Long id) {
 		return declareCustomsService.passCancel(id);
 	}
+
+	/**
+	 * 通过id查询费用明细
+	 */
+	@Override
+	public R<DeclareCustomsFees> getDeclareCustomsFeesById(Long id) {
+		return R.data(feesService.getById(id));
+	}
+
+	/**
+	 * 修改费用明细
+	 */
+	@Override
+	public R updateDeclareCustomsFees(DeclareCustomsFees declareCustomsFees) {
+		return R.status(feesService.updateById(declareCustomsFees));
+	}
 }

+ 2 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/mapper/DeclareCustomsFeesMapper.java

@@ -23,4 +23,6 @@ public interface DeclareCustomsFeesMapper extends BaseMapper<DeclareCustomsFees>
 	 * @return
 	 */
 	List<DeclareCustomsFeesVo> selectFeesPage(IPage page, DeclareCustomsFeesVo declareCustomsFees);
+
+	void submitPay(Long pid);
 }

+ 20 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/mapper/DeclareCustomsFeesMapper.xml

@@ -15,7 +15,27 @@
         <result column="is_deleted" property="isDeleted"/>
         <result column="tenant_id" property="tenantId"/>
         <result column="remark" property="remark"/>
+        <result column="item_id" property="itemId"/>
+        <result column="sort" property="sort"/>
+        <result column="quantity" property="quantity"/>
+        <result column="price" property="price"/>
+        <result column="amount" property="amount"/>
+        <result column="currency" property="currency"/>
+        <result column="fees_type" property="feesType"/>
+        <result column="src_order_no" property="srcOrderNo"/>
+        <result column="src_type" property="srcType"/>
+        <result column="settlement_amount" property="settlementAmount"/>
+        <result column="settlement_date" property="settlementDate"/>
+        <result column="exchange_rate" property="exchangeRate"/>
+        <result column="corp_id" property="corpId"/>
+        <result column="submit_pay" property="submitPay"/>
+        <result column="auto_generate" property="autoGenerate"/>
+        <result column="generation_source" property="generationSource"/>
+        <result column="unit" property="unit"/>
     </resultMap>
+    <update id="submitPay">
+        update declare_customs_fees SET submit_pay = '1' WHERE pid = #{id}
+    </update>
 
     <select id="selectFeesPage" resultMap="DeclareCustomsFeesMapperResultMap">
         SELECT * FROM declare_customs_fees WHERE is_deleted = 0

+ 161 - 25
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/DeclareCustomsServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
@@ -15,20 +16,29 @@ import org.springblade.check.dto.AuditProecessDTO;
 import org.springblade.check.entity.AuditPathsActs;
 import org.springblade.check.entity.AuditPathsLevels;
 import org.springblade.check.feign.ICheckClient;
-import org.springblade.client.constant.LandConstant;
 import org.springblade.client.entity.CommonFile;
+import org.springblade.client.entity.Message;
 import org.springblade.client.feign.ICommonFileClient;
+import org.springblade.client.feign.IMessageClient;
 import org.springblade.client.feign.ISerialClient;
 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.ObjectUtil;
-import org.springblade.purchase.sales.entity.Biding;
+import org.springblade.finance.dto.ApplyDTO;
+import org.springblade.finance.feign.IFinanceClient;
+import org.springblade.finance.vojo.Acc;
+import org.springblade.finance.vojo.Items;
+import org.springblade.system.feign.ISysClient;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.math.BigDecimal;
 import java.math.MathContext;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
@@ -52,6 +62,12 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
 
 	private final ICheckClient iCheckClient;//审批
 	private final ICommonFileClient commonFileClient;//附件
+	private final IFinanceClient financeClient;//财务
+	private final ISysClient sysClient;
+
+	private IUserClient userClient;//获取用户信息
+
+	private final IMessageClient messageClient;//消息
 
 	/**
 	 * 获得报关详情
@@ -363,11 +379,7 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
 	 */
 	@Override
 	public R passCheck(Long id) {
-		LambdaQueryWrapper<DeclareCustoms> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(DeclareCustoms::getId, id);
-		lambdaQueryWrapper.eq(DeclareCustoms::getTenantId, AuthUtil.getTenantId());
-		lambdaQueryWrapper.eq(DeclareCustoms::getIsDeleted, 0);
-		DeclareCustoms declareCustoms = baseMapper.selectOne(lambdaQueryWrapper);
+		DeclareCustoms declareCustoms = baseMapper.selectById(id);
 		if (declareCustoms == null){
 			throw new SecurityException("审批通过失败");
 		}
@@ -376,7 +388,7 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
 		}
 
 		//生成账单
-
+		this.paymentApply(declareCustoms, declareCustoms.getImportExportSigns(), declareCustoms.getImportExportSigns());
 		declareCustoms.setStatus(3);
 		declareCustoms.setAuditStatus("审批通过");
 		baseMapper.updateById(declareCustoms);
@@ -389,11 +401,7 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
 	 */
 	@Override
 	public R underReview(Long id) {
-		LambdaQueryWrapper<DeclareCustoms> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(DeclareCustoms::getId, id);
-		lambdaQueryWrapper.eq(DeclareCustoms::getTenantId, AuthUtil.getTenantId());
-		lambdaQueryWrapper.eq(DeclareCustoms::getIsDeleted, 0);
-		DeclareCustoms declareCustoms = baseMapper.selectOne(lambdaQueryWrapper);
+		DeclareCustoms declareCustoms = baseMapper.selectById(id);
 		if (declareCustoms == null){
 			throw new SecurityException("审批通过失败");
 		}
@@ -410,11 +418,7 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
 	 */
 	@Override
 	public R passCancel(Long id) {
-		LambdaQueryWrapper<DeclareCustoms> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(DeclareCustoms::getId, id);
-		lambdaQueryWrapper.eq(DeclareCustoms::getTenantId, AuthUtil.getTenantId());
-		lambdaQueryWrapper.eq(DeclareCustoms::getIsDeleted, 0);
-		DeclareCustoms declareCustoms = baseMapper.selectOne(lambdaQueryWrapper);
+		DeclareCustoms declareCustoms = baseMapper.selectById(id);
 		if (declareCustoms == null){
 			throw new SecurityException("审批驳回失败,未找到单据");
 		}
@@ -436,11 +440,7 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
 	@Transactional(rollbackFor = Exception.class)
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public DeclareCustoms revoke(DeclareCustoms declareCustoms){
-		LambdaQueryWrapper<DeclareCustoms> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(DeclareCustoms::getId, declareCustoms.getId());
-		lambdaQueryWrapper.eq(DeclareCustoms::getTenantId, AuthUtil.getTenantId());
-		lambdaQueryWrapper.eq(DeclareCustoms::getIsDeleted, 0);
-		DeclareCustoms customs = baseMapper.selectOne(lambdaQueryWrapper);
+		DeclareCustoms customs = baseMapper.selectById(declareCustoms.getId());
 		if (ObjectUtil.isEmpty(customs)){
 			throw new SecurityException("撤销失败,未找到单据");
 		}
@@ -452,8 +452,27 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
 			throw new SecurityException("撤销失败,订单未提交审核");
 		}
 
-		//撤销
-		iCheckClient.deteleByBillId(declareCustoms.getId());
+		//获取账单信息
+		Acc acc = new Acc();
+		acc.setSrcParentId(customs.getId());
+		if ("BGJK".equals(customs.getImportExportSigns())) {
+			acc.setBillType("申请");
+		} else {
+			acc.setBillType("收费");
+		}
+		acc.setTradeType("JGBG");
+		acc.setSrcType(8);
+		R<List<Acc>> r = financeClient.getAccListByCondition(acc);
+		if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+			for (Acc acc_ : r.getData()) {
+				//判断是否有结算 true 不允许撤销审核  false 删除账单信息并撤销审核
+				if (!acc_.getSettlementAmount().equals(new BigDecimal("0.00"))) {
+					throw new SecurityException("订单已结算,不允许撤销");
+				} else {
+					financeClient.remove(acc_.getId() + "");
+				}
+			}
+		}
 
 		//修改单据状态
 		customs.setStatus(0);
@@ -462,8 +481,125 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
 		customs.setUpdateTime(new Date());
 		baseMapper.updateById(customs);
 
+		//获取订单费用信息
+		LambdaQueryWrapper<DeclareCustomsFees> feesLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		feesLambdaQueryWrapper.eq(DeclareCustomsFees::getIsDeleted, 0);
+		feesLambdaQueryWrapper.eq(DeclareCustomsFees::getPid, customs.getId());
+		feesLambdaQueryWrapper.eq(DeclareCustomsFees::getTenantId, AuthUtil.getTenantId());
+		feesLambdaQueryWrapper.eq(DeclareCustomsFees::getSubmitPay, 1);
+		List<DeclareCustomsFees> feesList = feesMapper.selectList(feesLambdaQueryWrapper);
+		for (DeclareCustomsFees declareCustomsFees : feesList) {
+			declareCustomsFees.setSubmitPay(0);
+			feesMapper.updateById(declareCustomsFees);
+		}
+
+		//撤销
+		iCheckClient.deteleByBillId(declareCustoms.getId());
 		return customs;
 	}
 
+	/**
+	 * 订单生成账单 并且推送财务消息
+	 *
+	 * @param billType 货款类型: 申请 收费 付费
+	 * @param itemType 付款类型: 采购 销售 收货 发货
+	 */
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
+	public void paymentApply(DeclareCustoms declareCustoms, String billType, String itemType) {
+		Long pid = declareCustoms.getId();
+
+		//账单数据
+		ApplyDTO applyDTO = new ApplyDTO();
+		if ("BGJK".equals(billType)) {
+			applyDTO.setBillType("申请");
+		} else {
+			applyDTO.setBillType("收费");
+		}
+		applyDTO.setTradeType("JGBG");
+		applyDTO.setBelongCompany(declareCustoms.getConsumptionUnitName());
+
+		//获取订单费用信息
+		LambdaQueryWrapper<DeclareCustomsFees> feesLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		feesLambdaQueryWrapper.eq(DeclareCustomsFees::getIsDeleted, 0);
+		feesLambdaQueryWrapper.eq(DeclareCustomsFees::getPid, pid);
+		feesLambdaQueryWrapper.eq(DeclareCustomsFees::getTenantId, AuthUtil.getTenantId());
+		feesLambdaQueryWrapper.eq(DeclareCustomsFees::getSubmitPay, 0);
+		List<DeclareCustomsFees> feesList = feesMapper.selectList(feesLambdaQueryWrapper);
+		if (CollectionUtils.isNotEmpty(feesList)) {
+			//账单明细
+			List<Items> itemsList = new ArrayList<>();
+			for (DeclareCustomsFees declareCustomsFees : feesList) {
+				Items items = new Items();
+
+				if (1 == declareCustomsFees.getFeesType()) {
+					items.setSrcFeesType("收费");
+				} else {
+					items.setSrcFeesType("付费");
+				}
+				items.setItemType(itemType);
+				items.setPrice(declareCustomsFees.getPrice());
+				//账单数据
+				items.setAmount(declareCustomsFees.getAmount());//金额
+				items.setQuantity(declareCustomsFees.getQuantity());//数量
+				items.setSrcOrderno(declareCustoms.getSysNo());//来源订单号
+				items.setCorpId(declareCustomsFees.getCorpId());//客户id
+				items.setSrcParentId(pid);//来源主表id
+				items.setCurrency(declareCustomsFees.getCurrency());//币别
+				items.setSrcType(8);//结算标识
+				items.setTradeType("JGBG");//系统类别
+				items.setUnit(declareCustomsFees.getUnit());//计价单位
+				items.setRemarks(declareCustomsFees.getRemark());//备注
+				items.setSrcBillNo(declareCustoms.getContractAgreementNo());//合同号
+				items.setBillNo(declareCustoms.getDeliveryNumbers());//提单号
+				items.setStockTime(declareCustoms.getDeclareDate());//业务日期
+				//获取费用id
+				if (ObjectUtils.isNotNull(declareCustomsFees.getItemId())) {
+					items.setCostType(declareCustomsFees.getItemId().toString());
+					items.setSrcFeesId(declareCustomsFees.getId());
+				}
+				itemsList.add(items);
+				applyDTO.setItemsList(itemsList);
+			}
+			if (CollectionUtils.isNotEmpty(itemsList)) {
+				//生成账单
+				R paymentApply = financeClient.paymentApplyBoxTube(applyDTO);
+				if (!paymentApply.isSuccess()) {
+					throw new RuntimeException(paymentApply.getMsg());
+				}
+				//给角色为财务的人发送消息
+				R<String> clientDeptIds = sysClient.getRoleIds(SecureUtil.getTenantId(), "财务");
+				if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
+					R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()));
+					if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
+						for (User datum : userList.getData()) {
+							//循环发送消息
+							Message sendMessage = new Message();
+							sendMessage.setParameter(String.valueOf(pid));
+							sendMessage.setUserName(AuthUtil.getUserName());
+							sendMessage.setUserId(AuthUtil.getUserId());
+							sendMessage.setToUserId(datum.getId());
+							sendMessage.setToUserName(datum.getName());
+							sendMessage.setMessageType(1);
+							sendMessage.setTenantId(AuthUtil.getTenantId());
+							sendMessage.setCreateUser(AuthUtil.getUserId());
+							sendMessage.setCreateTime(new Date());
+							sendMessage.setUrl(declareCustoms.getUrl());
+							sendMessage.setPageLabel(declareCustoms.getPageLabel());
+							sendMessage.setPageStatus(declareCustoms.getPageStatus());
+							sendMessage.setMessageBody("您订单" + declareCustoms.getSysNo() + "审核通过,请查看");
+							R save = messageClient.save(sendMessage);
+							if (!save.isSuccess()) {
+								throw new SecurityException("发送消息失败");
+							}
+						}
+					}
+				}
+				//修改费用明细
+				feesMapper.submitPay(declareCustoms.getId());
+			}
+		}
+	}
+
 
 }

+ 4 - 2
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java

@@ -522,8 +522,10 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 				stockGoods.setBalanceVolumn(stockGoods.getBalanceVolumn() != null ? stockGoods.getBalanceVolumn().add(deliveryItems.getBillWeight()) : new BigDecimal("0").add(deliveryItems.getBillWeight()));//结余码单重量 加
 			}
 		} else {
-			if (stockGoods.getLockingQuantity().compareTo(deliveryItems.getActualQuantity()) < 0) {
-				throw new RuntimeException(stockGoods.getCode() + "更新库存总账失败,锁定库存不足");
+			if (!"681169".equals(AuthUtil.getTenantId())){
+				if (stockGoods.getLockingQuantity().compareTo(deliveryItems.getActualQuantity()) < 0) {
+					throw new RuntimeException(stockGoods.getCode() + "更新库存总账失败,锁定库存不足");
+				}
 			}
 			stockGoods.setLockingQuantity(stockGoods.getLockingQuantity().subtract(deliveryItems.getActualQuantity()));
 		}

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

@@ -474,7 +474,8 @@
             AND item.item_id = #{itemId}
             AND item.corp_id = #{corpId}
             <if test='tenantId != null and tenantId != "" and tenantId == "681169"'>
-                AND bo.order_status NOT IN ('待收货','已完成')
+                and bo.actual_delivery_date is NULL
+                AND bo.order_status NOT IN ('录入')
             </if>
     </select>
     <select id="salesTrend"  resultType="org.springblade.purchase.sales.vo.SalesTrend">

+ 43 - 1
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -29,9 +29,11 @@ import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
+import org.springblade.box.tube.entity.DeclareCustomsFees;
 import org.springblade.box.tube.entity.RepairFees;
 import org.springblade.box.tube.entity.TradingBoxFees;
 import org.springblade.box.tube.entity.TransportItemFees;
+import org.springblade.box.tube.feign.IDeclareCustomsClient;
 import org.springblade.box.tube.feign.IRepairClient;
 import org.springblade.box.tube.feign.ITradingBoxClient;
 import org.springblade.box.tube.feign.ITransportClient;
@@ -137,6 +139,8 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 
 	private final IRepairClient repairClient;
 
+	private final IDeclareCustomsClient declareCustomsClient;
+
 	/**
 	 * 溢付款对外访问接口
 	 */
@@ -694,6 +698,27 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 			repairFeesR.getData().setSettlementAmount(decimal);
 			repairFeesR.getData().setSettlementDate(null);
 			repairClient.updateRepairFees(repairFeesR.getData());
+		}else if (type == 8){//修改金港报关
+			Long srcFeesId = acc.getSrcFeesId();
+			if (srcFeesId == null) {
+				throw new SecurityException("撤销账单失败,未获取到原业务信息");
+			}
+
+			R<DeclareCustomsFees> declareCustomsFeesR = declareCustomsClient.getDeclareCustomsFeesById(srcFeesId);
+			if (!declareCustomsFeesR.isSuccess() && ObjectUtils.isNull(declareCustomsFeesR.getData())) {
+				throw new SecurityException("修改原单据失败");
+			}
+			//回退原业务表数据
+			if (declareCustomsFeesR.getData().getSettlementAmount() == null) {
+				throw new SecurityException("撤销账单失败,原业务表已收金额为空");
+			}
+			BigDecimal decimal = declareCustomsFeesR.getData().getSettlementAmount().subtract(items.getThisAmount());
+			if (decimal.compareTo(BigDecimal.ZERO) < 0) {
+				throw new SecurityException("撤销账单失败,剩余已收金额不够本次扣款");
+			}
+			declareCustomsFeesR.getData().setSettlementAmount(decimal);
+			declareCustomsFeesR.getData().setSettlementDate(null);
+			declareCustomsClient.updateDeclareCustomsFees(declareCustomsFeesR.getData());
 		}
 
 	}
@@ -888,7 +913,24 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 			accMapper.updateById(acc);
 			repairFeesR.getData().setSettlementDate(new Date());
 			repairClient.updateRepairFees(repairFeesR.getData());
-		} else {
+		} else if (type == 8) {//金港报关
+			Long srcFeesId = acc.getSrcFeesId();
+			if (srcFeesId == null) {
+				throw new SecurityException("操作失败,未获取到原业务信息");
+			}
+
+			R<DeclareCustomsFees> feesR = declareCustomsClient.getDeclareCustomsFeesById(srcFeesId);
+			if (!feesR.isSuccess() && ObjectUtils.isNull(feesR.getData())) {
+				throw new SecurityException("修改原单据失败");
+			}
+			acc.setSettlementAmount(acc.getSettlementAmount() != null ? acc.getSettlementAmount().add(items.getThisAmount()) : new BigDecimal("0").add(items.getThisAmount()));
+			feesR.getData().setSettlementAmount(feesR.getData().getSettlementAmount() != null ? feesR.getData().getSettlementAmount().add(items.getThisAmount()) : new BigDecimal("0").add(items.getThisAmount()));
+			accMapper.updateById(acc);
+			DeclareCustomsFees declareCustomsFees = new DeclareCustomsFees();
+			BeanUtils.copyProperties(feesR.getData(),declareCustomsFees);
+			declareCustomsFees.setSettlementDate(new Date());
+			declareCustomsClient.updateDeclareCustomsFees(declareCustomsFees);
+		}else {
 			throw new SecurityException("操作失败,财务类型为空无法结算");
 		}