Browse Source

1.增加报关四个amend模块请核,审核通过,审核驳回,撤销审核逻辑
2.增加获取报关明细接口用于amend获取原数据
3.修改费用批量删除接口重新计算费用

纪新园 4 months ago
parent
commit
bbae6d9c4c

+ 6 - 2
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/amends/entity/Amends.java

@@ -30,7 +30,6 @@ import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
 
@@ -99,7 +98,7 @@ public class Amends implements Serializable {
 	private Date updateTime;
 	/**
 	 * 业务类型, SEA=海运出口AMEND SIA=海运进口AMEND AEA=空运出口AMEND AIA=空运进口AMEND
-	 *EXPA=快递amend  TRUCKA=海运派车amend  MFAA=空运舱单amend  MFSA=海运舱单amend
+	 * EXPA=快递amend  TRUCKA=海运派车amend  MFAA=空运舱单amend  MFSA=海运舱单amend
 	 */
 	@ApiModelProperty(value = "业务类型, SEA=海运出口AMEND SIA=海运进口AMEND AEA=空运出口AMEND AIA=空运进口AMEND")
 	private String businessType;
@@ -582,6 +581,11 @@ public class Amends implements Serializable {
 	 */
 	@ApiModelProperty(value = "来源部门")
 	private String srcDeptName;
+	/**
+	 * 核销单号
+	 */
+	@ApiModelProperty(value = "核销单号")
+	private String writeOffNo;
 
 	/**
 	 * 审核路径

+ 16 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/amends/service/impl/AmendsServiceImpl.java

@@ -266,6 +266,22 @@ public class AmendsServiceImpl extends ServiceImpl<AmendsMapper, Amends> impleme
 			actId = 1131;
 			processType = "海运舱单amend审核";
 			checkType = "MFSA";
+		}else if ("BGSEA".equals(declare.getBusinessType())) {
+			actId = 1136;
+			processType = "海运出口报关amend审核";
+			checkType = "BGSEA";
+		}else if ("BGSIA".equals(declare.getBusinessType())) {
+			actId = 1137;
+			processType = "海运进口报关amend审核";
+			checkType = "BGSIA";
+		}else if ("BGAEA".equals(declare.getBusinessType())) {
+			actId = 1138;
+			processType = "空运出口报关amend审核";
+			checkType = "BGAEA";
+		}else if ("BGAIA".equals(declare.getBusinessType())) {
+			actId = 1139;
+			processType = "空运进口报关amend审核";
+			checkType = "BGAIA";
 		}
 		//审批数据
 		LosAuditProecessDTO auditProecessDTO = new LosAuditProecessDTO();

+ 12 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/customsDeclaration/controller/CustomsDeclarationController.java

@@ -38,6 +38,7 @@ import org.springblade.los.business.customsDeclaration.vo.CustomsDeclarationVO;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 业务-报关 控制器
@@ -214,5 +215,16 @@ public class CustomsDeclarationController extends BladeController {
 		return R.data(declare);
 	}
 
+	/**
+	 * 详情
+	 */
+	@GetMapping("/getDetail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入bills")
+	public R<List<CustomsDeclaration>> getDetail(CustomsDeclaration customsDeclaration) {
+		List<CustomsDeclaration> detail = customsDeclarationService.getDetail(customsDeclaration);
+		return R.data(detail);
+	}
+
 
 }

+ 4 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/customsDeclaration/service/ICustomsDeclarationService.java

@@ -22,6 +22,8 @@ import org.springblade.core.tool.api.R;
 import org.springblade.los.business.customsDeclaration.entity.CustomsDeclaration;
 import org.springblade.los.business.customsDeclaration.vo.CustomsDeclarationVO;
 
+import java.util.List;
+
 /**
  * 业务-报关 服务类
  *
@@ -102,4 +104,6 @@ public interface ICustomsDeclarationService extends IService<CustomsDeclaration>
 	 * @return
 	 */
 	CustomsDeclaration copyCustomsDeclaration(CustomsDeclaration customsDeclaration);
+
+	List<CustomsDeclaration> getDetail(CustomsDeclaration customsDeclaration);
 }

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

@@ -781,4 +781,49 @@ public class CustomsDeclarationServiceImpl extends ServiceImpl<CustomsDeclaratio
 		return copyBills;
 	}
 
+	@Override
+	public List<CustomsDeclaration> getDetail(CustomsDeclaration customsDeclaration) {
+		if (ObjectUtils.isNull(customsDeclaration.getMblno()) &&
+			ObjectUtils.isNull(customsDeclaration.getRefno())
+		) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		LambdaQueryWrapper<CustomsDeclaration> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(customsDeclaration.getBusinessType()), CustomsDeclaration::getBusinessType, customsDeclaration.getBusinessType())
+			.like(ObjectUtils.isNotNull(customsDeclaration.getMblno()), CustomsDeclaration::getMblno, customsDeclaration.getMblno())
+			.like(ObjectUtils.isNotNull(customsDeclaration.getRefno()), CustomsDeclaration::getRefno, customsDeclaration.getRefno())
+			.eq(CustomsDeclaration::getIsDeleted, 0)
+			.eq(CustomsDeclaration::getTenantId, AuthUtil.getTenantId())
+			.eq(CustomsDeclaration::getStatus, 3);
+		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("财务")) {
+			lambdaQueryWrapper.apply("find_in_set(team_id,'" + AuthUtil.getPostId() + "')");
+		}
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			lambdaQueryWrapper.eq(CustomsDeclaration::getBranchId, deptUtils.getDeptPid());
+		}
+		List<CustomsDeclaration> billsList = baseMapper.selectList(lambdaQueryWrapper);
+		if (billsList.isEmpty()) {
+			throw new RuntimeException("未查到单据信息");
+		}
+		for (CustomsDeclaration detail : billsList) {
+			detail.setFeeCenterListC(feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+				.eq(FeeCenter::getIsDeleted, 0)
+				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+				.eq(FeeCenter::getPid, detail.getId())
+				.eq(FeeCenter::getDc, "C")
+				.eq(FeeCenter::getAccStatus, 1)
+				.eq(FeeCenter::getBillNo, detail.getBillNo())
+			));
+			detail.setFeeCenterListD(feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+				.eq(FeeCenter::getIsDeleted, 0)
+				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+				.eq(FeeCenter::getPid, detail.getId())
+				.eq(FeeCenter::getDc, "D")
+				.eq(FeeCenter::getAccStatus, 1)
+				.eq(FeeCenter::getBillNo, detail.getBillNo())
+			));
+		}
+		return billsList;
+	}
+
 }

+ 3 - 1
blade-service/blade-los/src/main/java/org/springblade/los/check/controller/AuditProecessController.java

@@ -258,7 +258,9 @@ public class AuditProecessController extends BladeController {
 		} else if ("sea-approve".equals(proecess.getCheckType()) || "sia-approve".equals(proecess.getCheckType()) ||
 			"aea-approve".equals(proecess.getCheckType()) || "aia-approve".equals(proecess.getCheckType()) ||
 			"EXPA".equals(proecess.getCheckType()) || "TRUCKA".equals(proecess.getCheckType()) ||
-			"MFAA".equals(proecess.getCheckType()) ||"MFSA".equals(proecess.getCheckType()) ) {
+			"MFAA".equals(proecess.getCheckType()) ||"MFSA".equals(proecess.getCheckType()) ||
+			"BGSEA".equals(proecess.getCheckType()) ||"BGSIA".equals(proecess.getCheckType()) ||
+			"BGAEA".equals(proecess.getCheckType()) ||"BGAIA".equals(proecess.getCheckType())) {
 			auditProecessService.amendsCheck(auditProecess);
 		} else if ("MYDL".equals(proecess.getCheckType()) || "FFSQ-SK".equals(proecess.getCheckType())
 			|| "FFSQ-WK".equals(proecess.getCheckType()) || "YSQR-D".equals(proecess.getCheckType())

+ 60 - 0
blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java

@@ -311,6 +311,22 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 					message.setMessageBody("您有新的海运舱单amend审核待确认,业务单号:" + auditProecessDTO.getBillNo() + ",请审核。"
 						+ "提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
 					);
+				} else if ("海运出口报关amend审核".equals(auditProecess.getProcessType())) {
+					message.setMessageBody("您有新的海运出口报关amend审核待确认,业务单号:" + auditProecessDTO.getBillNo() + ",请审核。"
+						+ "提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
+					);
+				} else if ("海运进口报关amend审核".equals(auditProecess.getProcessType())) {
+					message.setMessageBody("您有新的海运进口报关amend审核待确认,业务单号:" + auditProecessDTO.getBillNo() + ",请审核。"
+						+ "提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
+					);
+				} else if ("空运出口报关amend审核".equals(auditProecess.getProcessType())) {
+					message.setMessageBody("您有新的空运出口报关amend审核待确认,业务单号:" + auditProecessDTO.getBillNo() + ",请审核。"
+						+ "提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
+					);
+				} else if ("空运进口报关amend审核".equals(auditProecess.getProcessType())) {
+					message.setMessageBody("您有新的空运进口报关amend审核待确认,业务单号:" + auditProecessDTO.getBillNo() + ",请审核。"
+						+ "提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
+					);
 				}
 
 				message.setUrl("/approveDataH/index");
@@ -1183,6 +1199,26 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 						+ "单据日期:" + billsDate + ",请审核。"
 						+ "提交人:" + proecessTemp.getSendName() + "  " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
 					);
+				}else if ("海运出口报关amend审核".equals(auditProecess.getProcessType())) {
+					message.setMessageBody("您有新的海运出口报关amend审核,业务单号:" + proecessTemp.getBillNo() + ","
+						+ "单据日期:" + billsDate + ",请审核。"
+						+ "提交人:" + proecessTemp.getSendName() + "  " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
+					);
+				}else if ("海运进口报关amend审核".equals(auditProecess.getProcessType())) {
+					message.setMessageBody("您有新的海运进口报关amend审核,业务单号:" + proecessTemp.getBillNo() + ","
+						+ "单据日期:" + billsDate + ",请审核。"
+						+ "提交人:" + proecessTemp.getSendName() + "  " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
+					);
+				}else if ("空运出口报关amend审核".equals(auditProecess.getProcessType())) {
+					message.setMessageBody("您有新的空运出口报关amend审核,业务单号:" + proecessTemp.getBillNo() + ","
+						+ "单据日期:" + billsDate + ",请审核。"
+						+ "提交人:" + proecessTemp.getSendName() + "  " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
+					);
+				}else if ("空运进口报关amend审核".equals(auditProecess.getProcessType())) {
+					message.setMessageBody("您有新的空运进口报关amend审核,业务单号:" + proecessTemp.getBillNo() + ","
+						+ "单据日期:" + billsDate + ",请审核。"
+						+ "提交人:" + proecessTemp.getSendName() + "  " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
+					);
 				}
 				message.setUrl(auditProecess.getUrl());
 				message.setPageLabel(auditProecess.getPageLabel());
@@ -1221,6 +1257,14 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 					sendMessage.setMessageBody("您的空运舱单amend审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
 				} else if ("海运舱单amend审核".equals(auditProecess.getProcessType())) {
 					sendMessage.setMessageBody("您的海运舱单amend审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				}else if ("海运出口报关amend审核".equals(auditProecess.getProcessType())) {
+					sendMessage.setMessageBody("您的海运出口报关amend审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				}else if ("海运进口报关amend审核".equals(auditProecess.getProcessType())) {
+					sendMessage.setMessageBody("您的海运进口报关amend审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				}else if ("空运出口报关amend审核".equals(auditProecess.getProcessType())) {
+					sendMessage.setMessageBody("您的空运出口报关amend审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				}else if ("空运进口报关amend审核".equals(auditProecess.getProcessType())) {
+					sendMessage.setMessageBody("您的空运进口报关amend审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
 				}
 				R save = messageClient.save(sendMessage);
 				if (!save.isSuccess()) {
@@ -1298,6 +1342,14 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 					sendMessage.setMessageBody("您的空运舱单amend审核已通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
 				} else if ("海运舱单amend审核".equals(auditProecess.getProcessType())) {
 					sendMessage.setMessageBody("您的海运舱单amend审核已通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				}else if ("海运出口报关amend审核".equals(auditProecess.getProcessType())) {
+					sendMessage.setMessageBody("您的海运出口报关amend审核已通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				}else if ("海运进口报关amend审核".equals(auditProecess.getProcessType())) {
+					sendMessage.setMessageBody("您的海运进口报关amend审核已通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				}else if ("空运出口报关amend审核".equals(auditProecess.getProcessType())) {
+					sendMessage.setMessageBody("您的空运出口报关amend审核已通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				}else if ("空运进口报关amend审核".equals(auditProecess.getProcessType())) {
+					sendMessage.setMessageBody("您的空运进口报关amend审核已通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
 				}
 				R save = messageClient.save(sendMessage);
 				if (!save.isSuccess()) {
@@ -1333,6 +1385,14 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 					sendMessage.setMessageBody("您的空运舱单amend审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
 				} else if ("海运舱单amend审核".equals(auditProecess.getProcessType())) {
 					sendMessage.setMessageBody("您的海运舱单amend审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				}else if ("海运出口报关amend审核".equals(auditProecess.getProcessType())) {
+					sendMessage.setMessageBody("您的海运出口报关amend审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				}else if ("海运进口报关amend审核".equals(auditProecess.getProcessType())) {
+					sendMessage.setMessageBody("您的海运进口报关amend审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				}else if ("空运出口报关amend审核".equals(auditProecess.getProcessType())) {
+					sendMessage.setMessageBody("您的空运出口报关amend审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				}else if ("空运进口报关amend审核".equals(auditProecess.getProcessType())) {
+					sendMessage.setMessageBody("您的空运进口报关amend审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
 				}
 				R save = messageClient.save(sendMessage);
 				if (!save.isSuccess()) {

+ 6 - 17
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FeeCenterController.java

@@ -30,7 +30,6 @@ 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.tool.api.R;
-import org.springblade.core.tool.utils.Func;
 import org.springblade.los.basic.corps.entity.BCorps;
 import org.springblade.los.basic.fees.entity.LosBFeesTemplate;
 import org.springblade.los.business.sea.entity.Bills;
@@ -43,7 +42,6 @@ import javax.validation.Valid;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * 物流-费用中心-所有业务费用集中在该表中 控制器
@@ -229,16 +227,7 @@ public class FeeCenterController extends BladeController {
 	@ApiOperation(value = "删除", notes = "传入ids")
 	@RepeatSubmit
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-		List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
-			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-			.eq(FeeCenter::getIsDeleted, 0)
-			.apply("find_in_set(id,'" + ids + "')"));
-		for (FeeCenter item : feeCenterList) {
-			if (item.getAccStatus() != 0) {
-				throw new RuntimeException("费用:" + item.getFeeCnName() + "已生成账单,删除失败");
-			}
-		}
-		return R.status(feeCenterService.removeByIds(Func.toLongList(ids)));
+		return feeCenterService.delete(ids);
 	}
 
 	/**
@@ -322,11 +311,11 @@ public class FeeCenterController extends BladeController {
 	 */
 	@GetMapping("/getFeeCenterCorpIds")
 	@ApiOperationSupport(order = 2)
-	public R<List<BCorps>> getFeeCenterCorpIds(@RequestParam(value = "billId",required = false) Long billId,
-											   @RequestParam(value = "dc",required = false) String dc,
-											   @RequestParam(value = "type",required = false) String type,
-											   @RequestParam(value = "accBillNo",required = false) String accBillNo) {
-		return R.data(feeCenterService.getFeeCenterCorpIds(billId, dc, type,accBillNo));
+	public R<List<BCorps>> getFeeCenterCorpIds(@RequestParam(value = "billId", required = false) Long billId,
+											   @RequestParam(value = "dc", required = false) String dc,
+											   @RequestParam(value = "type", required = false) String type,
+											   @RequestParam(value = "accBillNo", required = false) String accBillNo) {
+		return R.data(feeCenterService.getFeeCenterCorpIds(billId, dc, type, accBillNo));
 	}
 
 	/**

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/IFeeCenterService.java

@@ -93,4 +93,6 @@ public interface IFeeCenterService extends IService<FeeCenter> {
 	boolean removeTradeYfk(List<FeeCenter> feeCenterList);
 
 	R updateCorpBatch(Bills bills);
+
+	R delete(String ids);
 }

+ 77 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java

@@ -23,6 +23,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.los.Util.IDeptUtils;
 import org.springblade.los.basic.corps.entity.BCorps;
 import org.springblade.los.basic.corps.mapper.CorpsMapper;
@@ -1671,4 +1672,80 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 		return R.data(bills.getFeeCenterListD());
 	}
 
+	@Override
+	public R delete(String ids) {
+		List<FeeCenter> feeCenterList = baseMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getIsDeleted, 0)
+			.apply("find_in_set(id,'" + ids + "')"));
+		for (FeeCenter item : feeCenterList) {
+			if (item.getAccStatus() != 0) {
+				throw new RuntimeException("费用:" + item.getFeeCnName() + "已生成账单,删除失败");
+			}
+		}
+		this.removeByIds(Func.toLongList(ids));
+		BigDecimal amountProfit = new BigDecimal("0.00");
+		BigDecimal amountProfitUsd = new BigDecimal("0.00");
+		BigDecimal amountProfitLoc = new BigDecimal("0.00");
+		BigDecimal amountDr = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && "CNY".equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		BigDecimal amountDrUsd = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && "USD".equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		BigDecimal amountCr = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && "CNY".equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		BigDecimal amountCrUsd = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && "USD".equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		BigDecimal amountDrLoc = feeCenterList.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
+		BigDecimal amountCrLoc = feeCenterList.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+		if ("SE".equals(feeCenterList.get(0).getBusinessType()) || "SI".equals(feeCenterList.get(0).getBusinessType())) {
+			Bills bills = billsMapper.selectById(feeCenterList.get(0).getPid());
+			//利润 = 收 - 付
+			amountProfit = amountDr.subtract(amountCr);
+			amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
+			amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
+			bills.setAmountDr(bills.getAmountDr().subtract(amountDr));
+			bills.setAmountCr(bills.getAmountCr().subtract(amountCr));
+			bills.setAmountProfit(bills.getAmountProfit().subtract(amountProfit));
+			bills.setAmountDrUsd(bills.getAmountDrUsd().subtract(amountDrUsd));
+			bills.setAmountCrUsd(bills.getAmountCrUsd().subtract(amountCrUsd));
+			bills.setAmountProfitUsd(bills.getAmountProfitUsd().subtract(amountProfitUsd));
+			bills.setAmountDrLoc(bills.getAmountDrLoc().subtract(amountDrLoc));
+			bills.setAmountCrLoc(bills.getAmountCrLoc().subtract(amountCrLoc));
+			bills.setAmountProfitLoc(bills.getAmountProfitLoc().subtract(amountProfitLoc));
+			billsMapper.updateById(bills);
+		} else if ("AE".equals(feeCenterList.get(0).getBusinessType()) || "AI".equals(feeCenterList.get(0).getBusinessType())) {
+			AeaBills aeaBills = aeaBillsMapper.selectById(feeCenterList.get(0).getPid());
+
+			//利润 = 收 - 付
+			amountProfit = amountDr.subtract(amountCr);
+			amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
+			amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
+			aeaBills.setAmountDr(aeaBills.getAmountDr().subtract(amountDr));
+			aeaBills.setAmountCr(aeaBills.getAmountCr().subtract(amountCr));
+			aeaBills.setAmountProfit(aeaBills.getAmountProfit().subtract(amountProfit));
+			aeaBills.setAmountDrUsd(aeaBills.getAmountDrUsd().subtract(amountDrUsd));
+			aeaBills.setAmountCrUsd(aeaBills.getAmountCrUsd().subtract(amountCrUsd));
+			aeaBills.setAmountProfitUsd(aeaBills.getAmountProfitUsd().subtract(amountProfitUsd));
+			aeaBills.setAmountDrLoc(aeaBills.getAmountDrLoc().subtract(amountDrLoc));
+			aeaBills.setAmountCrLoc(aeaBills.getAmountCrLoc().subtract(amountCrLoc));
+			aeaBills.setAmountProfitLoc(aeaBills.getAmountProfitLoc().subtract(amountProfitLoc));
+			aeaBillsMapper.updateById(aeaBills);
+		} else if ("BGSE".equals(feeCenterList.get(0).getBusinessType()) || "BGSI".equals(feeCenterList.get(0).getBusinessType())
+			|| "BGAE".equals(feeCenterList.get(0).getBusinessType()) || "BGAI".equals(feeCenterList.get(0).getBusinessType())) {
+			CustomsDeclaration customsDeclaration = customsDeclarationMapper.selectById(feeCenterList.get(0).getPid());
+			//利润 = 收 - 付
+			amountProfit = amountDr.subtract(amountCr);
+			amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
+			amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
+			customsDeclaration.setAmountDr(customsDeclaration.getAmountDr().subtract(amountDr));
+			customsDeclaration.setAmountCr(customsDeclaration.getAmountCr().subtract(amountCr));
+			customsDeclaration.setAmountProfit(customsDeclaration.getAmountProfit().subtract(amountProfit));
+			customsDeclaration.setAmountDrUsd(customsDeclaration.getAmountDrUsd().subtract(amountDrUsd));
+			customsDeclaration.setAmountCrUsd(customsDeclaration.getAmountCrUsd().subtract(amountCrUsd));
+			customsDeclaration.setAmountProfitUsd(customsDeclaration.getAmountProfitUsd().subtract(amountProfitUsd));
+			customsDeclaration.setAmountDrLoc(customsDeclaration.getAmountDrLoc().subtract(amountDrLoc));
+			customsDeclaration.setAmountCrLoc(customsDeclaration.getAmountCrLoc().subtract(amountCrLoc));
+			customsDeclaration.setAmountProfitLoc(customsDeclaration.getAmountProfitLoc().subtract(amountProfitLoc));
+			customsDeclarationMapper.updateById(customsDeclaration);
+		}
+		return R.success("操作成功");
+	}
+
 }