Browse Source

1.海运出口-配箱一键保存增加件重尺合计同步主单件重尺逻辑
2.海运进出口完成单据看不到分单数据列表修改
3.海运进出口amend获取原数据区分所属公司
4.海运进出口报表打印包装单位取值问题修改
5.业务修改-获取原数据接口增加分单号查询
6.业务修改模块增加所属公司并区分权限
7.导入提单样本,收发通的详情内容需要自动转换大写
8.导入提单样本,配箱信息不能重复导入
9.如果有费用处于提交审核状态,整票单据不允许提交审核
10.财务状态不对以及费用末模版导入计算利润不对修改

纪新园 6 months ago
parent
commit
efe4617c75

+ 11 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/update/entity/Update.java

@@ -130,5 +130,16 @@ public class Update implements Serializable {
 	@TableField(exist = false)
 	private String pageLabel;
 
+	/**
+	 * 分公司 Id
+	 */
+	@ApiModelProperty(value = "分公司 Id")
+	private String branchId;
+	/**
+	 * 分公司
+	 */
+	@ApiModelProperty(value = "分公司")
+	private String branchName;
+
 
 }

+ 11 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/update/entity/UpdateItem.java

@@ -263,5 +263,16 @@ public class UpdateItem implements Serializable {
 	@ApiModelProperty(value = "账单中心 英文字段")
 	private String finAccBillsFieldEname;
 
+	/**
+	 * 分公司 Id
+	 */
+	@ApiModelProperty(value = "分公司 Id")
+	private String branchId;
+	/**
+	 * 分公司
+	 */
+	@ApiModelProperty(value = "分公司")
+	private String branchName;
+
 
 }

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

@@ -1286,7 +1286,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 					}
 					containersReportsList.add(containersReports);
 					text.append(item.getCntrNo()).append("/").append(item.getSealNo()).append("<br/>")
-						.append(item.getCntrTypeCode()).append(item.getQuantity()).append(item.getPackingUnit()).append("<br/>")
+						.append(item.getCntrTypeCode()).append(item.getQuantity()).append(bills.getPackingUnit()).append("<br/>")
 						.append(item.getGrossWeight()).append("KGS").append("/")
 						.append(item.getMeasurement()).append("CBM").append("<br/>");
 					if (ObjectUtils.isNotNull(item.getCntrNo()) || ObjectUtils.isNotNull(item.getSealNo())) {
@@ -1338,7 +1338,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				StringBuilder cntrSealNo = new StringBuilder();
 				for (Containers item : containersList) {
 					text.append(item.getCntrNo()).append("/").append(item.getSealNo()).append("/").append(item.getCntrTypeCode()).append("<br/>")
-						.append(item.getQuantity()).append(item.getPackingUnit()).append("<br/>")
+						.append(item.getQuantity()).append(bills.getPackingUnit()).append("<br/>")
 						.append(item.getGrossWeight()).append("KGS").append("/")
 						.append(item.getMeasurement()).append("CBM").append("<br/>");
 					if (ObjectUtils.isNotNull(item.getCntrNo()) || ObjectUtils.isNotNull(item.getSealNo())) {
@@ -2115,7 +2115,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				StringBuilder text = new StringBuilder();
 				for (Containers item : containersList) {
 					text.append(item.getCntrNo()).append("/").append(item.getSealNo()).append("<br/>")
-						.append(item.getCntrTypeCode()).append(item.getQuantity()).append(item.getPackingUnit()).append("<br/>")
+						.append(item.getCntrTypeCode()).append(item.getQuantity()).append(bills.getPackingUnit()).append("<br/>")
 						.append(item.getGrossWeight()).append("KGS").append("/")
 						.append(item.getMeasurement()).append("CBM").append("<br/>");
 				}

+ 1 - 10
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/BillsController.java

@@ -285,15 +285,6 @@ public class BillsController extends BladeController {
 					.eq(AuthUtil.getUserRole().contains("操作员"), Bills::getOperatorId, AuthUtil.getUserId()).or()
 					.eq(AuthUtil.getUserRole().contains("客服"), Bills::getCustomerServiceId, AuthUtil.getUserId()).or()
 					.eq(Bills::getCreateUser, AuthUtil.getUserId()));
-			/*	if (AuthUtil.getUserRole().contains("业务员")) {
-					lambdaQueryWrapper.eq(Bills::getSrcId, AuthUtil.getUserId());
-				} else if (AuthUtil.getUserRole().contains("操作员")) {
-					lambdaQueryWrapper.eq(Bills::getOperatorId, AuthUtil.getUserId());
-				} else if (AuthUtil.getUserRole().contains("客服")) {
-					lambdaQueryWrapper.eq(Bills::getCustomerServiceId, AuthUtil.getUserId());
-				} else {
-					lambdaQueryWrapper.eq(Bills::getCreateUser, AuthUtil.getUserId());
-				}*/
 			}
 		} else {
 			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(bills.getSrcType()), Bills::getSrcType, bills.getSrcType())
@@ -307,7 +298,7 @@ public class BillsController extends BladeController {
 			.eq(ObjectUtils.isNotNull(bills.getBusinessType()), Bills::getBusinessType, bills.getBusinessType())
 			.eq(ObjectUtils.isNotNull(bills.getSeaType()), Bills::getSeaType, bills.getSeaType())
 			.eq(ObjectUtils.isNotNull(bills.getMasterBillNo()), Bills::getMasterBillNo, bills.getMasterBillNo())
-			.ne(Bills::getBillStatus, 3)
+			.ne(ObjectUtils.isNotNull(bills.getBillStatus()), Bills::getBillStatus, bills.getBillStatus())
 			.eq(ObjectUtils.isNotNull(bills.getMasterId()), Bills::getMasterId, bills.getMasterId());
 		List<Bills> pages = billsService.list(lambdaQueryWrapper);
 		return R.data(pages);

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

@@ -552,9 +552,13 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			}
 			containersService.saveOrUpdateBatch(bills.getContainersList());
 		}
-		if (quantity.compareTo(new BigDecimal("0.00")) == 0){
+		if (quantity.compareTo(new BigDecimal("0.00")) == 0) {
 			quantity = bills.getQuantity();
+		}
+		if (grossWeight.compareTo(new BigDecimal("0.00")) == 0) {
 			grossWeight = bills.getGrossWeight();
+		}
+		if (measurement.compareTo(new BigDecimal("0.00")) == 0) {
 			measurement = bills.getMeasurement();
 		}
 		//主单应加上分单费用
@@ -1794,17 +1798,21 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 				.eq(FeeCenter::getIsDeleted, 0)
 				.in(FeeCenter::getPid, idList)
-				.eq(FeeCenter::getAccStatus, "0")
-				.eq(FeeCenter::getAuditStatus, "0"));
+				.ne(FeeCenter::getAccStatus, "1")
+				.ne(FeeCenter::getAuditStatus, "4"));
 			if (!feeCenterList.isEmpty()) {
 				for (FeeCenter item : feeCenterList) {
+					if (!"0".equals(item.getAuditStatus())) {
+						throw new RuntimeException("单号:" + item.getBillNo() + "中,费用:" + item.getFeeCnName() + "正在审核中");
+					} else {
+						item.setAuditStatus("1");
+						item.setApplyId(AuthUtil.getUserId());
+						item.setApplyName(AuthUtil.getUserName());
+						item.setApplyTime(new Date());
+					}
 					item.setUpdateTime(new Date());
 					item.setUpdateUser(AuthUtil.getUserId());
 					item.setUpdateUserName(AuthUtil.getUserName());
-					item.setAuditStatus("1");
-					item.setApplyId(AuthUtil.getUserId());
-					item.setApplyName(AuthUtil.getUserName());
-					item.setApplyTime(new Date());
 				}
 				feeCenterService.updateBatchById(feeCenterList);
 			}
@@ -2280,29 +2288,38 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			.eq(Bills::getIsDeleted, 0)
 			.eq(Bills::getTenantId, AuthUtil.getTenantId())
 			.eq(Bills::getStatus, 3);
+		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+			lambdaQueryWrapper.eq(Bills::getBranchId, AuthUtil.getDeptId());
+		}
 		List<Bills> billsList = baseMapper.selectList(lambdaQueryWrapper);
 		if (billsList.isEmpty()) {
 			throw new RuntimeException("未查到单据信息");
 		}
 		for (Bills detail : billsList) {
-			detail.setFeeCenterListC(feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
-				.eq(FeeCenter::getIsDeleted, 0)
+			LambdaQueryWrapper<FeeCenter> lambdaQueryWrapperC = new LambdaQueryWrapper<>();
+			lambdaQueryWrapperC.eq(FeeCenter::getIsDeleted, 0)
 				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 				.eq(FeeCenter::getBillType, detail.getBillType())
 				.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::getBillNo, detail.getBillNo());
+			if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+				lambdaQueryWrapperC.eq(FeeCenter::getBranchId, AuthUtil.getDeptId());
+			}
+			detail.setFeeCenterListC(feeCenterService.list(lambdaQueryWrapperC));
+			LambdaQueryWrapper<FeeCenter> lambdaQueryWrapperD = new LambdaQueryWrapper<>();
+			lambdaQueryWrapperD.eq(FeeCenter::getIsDeleted, 0)
 				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 				.eq(FeeCenter::getBillType, detail.getBillType())
 				.eq(FeeCenter::getPid, detail.getId())
 				.eq(FeeCenter::getDc, "D")
 				.eq(FeeCenter::getAccStatus, 1)
-				.eq(FeeCenter::getBillNo, detail.getBillNo())
-			));
+				.eq(FeeCenter::getBillNo, detail.getBillNo());
+			if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+				lambdaQueryWrapperD.eq(FeeCenter::getBranchId, AuthUtil.getDeptId());
+			}
+			detail.setFeeCenterListD(feeCenterService.list(lambdaQueryWrapperD));
 			detail.setPreContainersList(preContainersService.list(new LambdaQueryWrapper<PreContainers>()
 				.eq(PreContainers::getIsDeleted, 0)
 				.eq(PreContainers::getTenantId, AuthUtil.getTenantId())
@@ -3745,6 +3762,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				auditProecessDTO.setSrcId(declare.getSrcId());
 				auditProecessDTO.setSrcCnName(declare.getSrcCnName());
 				auditProecessDTO.setSrcEnName(declare.getSrcEnName());
+				auditProecessDTO.setMblno(declare.getMblno());
+				auditProecessDTO.setHblno(declare.getHblno());
 				if ("SE".equals(declare.getBusinessType())) {
 					auditProecessDTO.setEtd(declare.getEtd());
 				} else if ("SI".equals(declare.getBusinessType())) {
@@ -3761,18 +3780,22 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 			.eq(FeeCenter::getIsDeleted, 0)
-			.eq(FeeCenter::getAuditStatus, "0")
-			.eq(FeeCenter::getAccStatus, 0)
+			.ne(FeeCenter::getAuditStatus, "4")
+			.ne(FeeCenter::getAccStatus, 1)
 			.in(FeeCenter::getPid, idMList));
 		if (!feeCenterList.isEmpty()) {
 			for (FeeCenter item : feeCenterList) {
+				if (!"0".equals(item.getAuditStatus())) {
+					throw new RuntimeException("单号:" + item.getBillNo() + "中,费用:" + item.getFeeCnName() + "正在审核中");
+				} else {
+					item.setAuditStatus("1");
+					item.setApplyId(AuthUtil.getUserId());
+					item.setApplyName(AuthUtil.getUserName());
+					item.setApplyTime(new Date());
+				}
 				item.setUpdateTime(new Date());
 				item.setUpdateUser(AuthUtil.getUserId());
 				item.setUpdateUserName(AuthUtil.getUserName());
-				item.setAuditStatus("1");
-				item.setApplyId(AuthUtil.getUserId());
-				item.setApplyName(AuthUtil.getUserName());
-				item.setApplyTime(new Date());
 			}
 			feeCenterService.updateBatchById(feeCenterList);
 		}

+ 22 - 20
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/ContainersServiceImpl.java

@@ -24,7 +24,6 @@ import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.los.Util.BoxNumUtils;
 import org.springblade.los.business.sea.dto.WaitingBox;
 import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.business.sea.entity.Containers;
@@ -489,13 +488,24 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 			deptName = String.join(",", res.getData());
 		}
 		List<ContainersBills> containersBillsList = new ArrayList<>();
-		List<ContainersBills> subtractContainersBillsList = new ArrayList<>();
+//		List<ContainersBills> subtractContainersBillsList = new ArrayList<>();
 		List<ContainersCommodity> containersCommodityList = new ArrayList<>();
+		Bills bills = billsMapper.selectById(list.get(0).getPid());
+		bills.setQuantity(list.stream().map(Containers::getQuantity).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		bills.setGrossWeight(list.stream().map(Containers::getGrossWeight).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		bills.setMeasurement(list.stream().map(Containers::getMeasurement).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		bills.setCfsQuantity(list.stream().map(Containers::getQuantity).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		bills.setCfsGrossWeight(list.stream().map(Containers::getGrossWeight).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		bills.setCfsMeasurement(list.stream().map(Containers::getMeasurement).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		bills.setUpdateUserName(AuthUtil.getUserName());
+		bills.setUpdateUser(AuthUtil.getUserId());
+		bills.setUpdateTime(new Date());
+		billsMapper.updateById(bills);
 		for (Containers containers : list) {
 			//BoxNumUtils.containerNumberVerification(containers.getCntrNo());
 			String sealNo = ObjectUtils.isNotNull(containers.getSealNo()) ? containers.getSealNo().toUpperCase() : "";
 			// 普柜可以设定为,铅封不能重复,但框架 FR  FH这一类的,HMM要求录入NIL,MSK要求录入000000
-			Boolean isNilSealNo = "".equals(sealNo) || "NIL".equals(sealNo) || "000000".equals(sealNo);
+			boolean isNilSealNo = sealNo.isEmpty() || "NIL".equals(sealNo) || "000000".equals(sealNo);
 
 			List<Containers> sealNoCount = baseMapper.selectList(new LambdaQueryWrapper<Containers>()
 				.eq(Containers::getTenantId, AuthUtil.getTenantId())
@@ -557,20 +567,12 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 			}
 			//预配箱型箱量
 			if (ObjectUtils.isNotNull(containers.getContainersBillsList())) {
-				containers.setQuantity(containers.getContainersBillsList().stream().map(ContainersBills::getQuantity).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-				containers.setGrossWeight(containers.getContainersBillsList().stream().map(ContainersBills::getGrossWeight).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-				containers.setNetWeight(containers.getContainersBillsList().stream().map(ContainersBills::getNetWeight).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-				containers.setMeasurement(containers.getContainersBillsList().stream().map(ContainersBills::getMeasurement).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+//				containers.setQuantity(containers.getContainersBillsList().stream().map(ContainersBills::getQuantity).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+//				containers.setGrossWeight(containers.getContainersBillsList().stream().map(ContainersBills::getGrossWeight).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+//				containers.setNetWeight(containers.getContainersBillsList().stream().map(ContainersBills::getNetWeight).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+//				containers.setMeasurement(containers.getContainersBillsList().stream().map(ContainersBills::getMeasurement).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				for (ContainersBills item : containers.getContainersBillsList()) {
 					if (item.getId() == null) {
-						Bills bills = billsMapper.selectById(item.getPpId());
-						bills.setCfsQuantity((ObjectUtils.isNotNull(bills.getCfsQuantity()) ? bills.getCfsQuantity() : new BigDecimal("0.00")).add(item.getQuantity()));
-						bills.setCfsMeasurement((ObjectUtils.isNotNull(bills.getCfsMeasurement()) ? bills.getCfsMeasurement() : new BigDecimal("0.00")).add(item.getMeasurement()));
-						bills.setCfsGrossWeight((ObjectUtils.isNotNull(bills.getCfsGrossWeight()) ? bills.getCfsGrossWeight() : new BigDecimal("0.00")).add(item.getGrossWeight()));
-						bills.setUpdateUserName(AuthUtil.getUserName());
-						bills.setUpdateUser(AuthUtil.getUserId());
-						bills.setUpdateTime(new Date());
-						billsMapper.updateById(bills);
 						item.setPid(containers.getId());
 						item.setCreateTime(new Date());
 						item.setCreateUser(AuthUtil.getUserId());
@@ -590,7 +592,7 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 				this.saveOrUpdate(containers);
 			}
 			//预配箱型箱量(删减)
-			if (ObjectUtils.isNotNull(containers.getSubtractContainersBillsList())) {
+			/*if (ObjectUtils.isNotNull(containers.getSubtractContainersBillsList())) {
 				for (ContainersBills item : containers.getSubtractContainersBillsList()) {
 					Bills bills = billsMapper.selectById(item.getPpId());
 					bills.setCfsQuantity((ObjectUtils.isNotNull(bills.getCfsQuantity()) ? bills.getCfsQuantity() : new BigDecimal("0.00")).subtract(item.getQuantity()));
@@ -602,11 +604,11 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 					billsMapper.updateById(bills);
 					subtractContainersBillsList.add(item);
 				}
-			}
+			}*/
 		}
 		containersCommodityService.saveOrUpdateBatch(containersCommodityList);
 		containersBillsService.saveOrUpdateBatch(containersBillsList);
-		containersBillsService.removeByIds(subtractContainersBillsList.stream().map(ContainersBills::getId).collect(Collectors.toList()));
+//		containersBillsService.removeByIds(subtractContainersBillsList.stream().map(ContainersBills::getId).collect(Collectors.toList()));
 		return R.data(list);
 	}
 
@@ -673,7 +675,7 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
 			excel.setBranchId(AuthUtil.getDeptId());
 		}
-		if ("SI".equals(excel.getBusinessType())){
+		if ("SI".equals(excel.getBusinessType())) {
 			excel.setWhetherFee("0");
 		}
 		return page.setRecords(baseMapper.updatePodStationPage(page, excel));
@@ -685,7 +687,7 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
 			excel.setBranchId(AuthUtil.getDeptId());
 		}
-		if ("SI".equals(excel.getBusinessType())){
+		if ("SI".equals(excel.getBusinessType())) {
 			excel.setWhetherFee("0");
 		}
 		return baseMapper.updatePodStationList(excel);

+ 13 - 5
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/TemplateImportServiceImpl.java

@@ -31,6 +31,7 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.StandardCopyOption;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author :jixinyuan
@@ -1324,22 +1325,22 @@ public class TemplateImportServiceImpl implements ITemplateImportService {
 		//发货人提单描述
 		String hshipper = getSheetCellValueAsString(sheet, 1, 0);
 		if (ObjectUtils.isNotNull(hshipper)) {
-			seaBillsDetail.setHshipperDetails(hshipper);
+			seaBillsDetail.setHshipperDetails(hshipper.toUpperCase());
 		}
 		//收货人提单描述
 		String hconsignee = getSheetCellValueAsString(sheet, 7, 0);
 		if (ObjectUtils.isNotNull(hconsignee)) {
-			seaBillsDetail.setHconsigneeDetails(hconsignee);
+			seaBillsDetail.setHconsigneeDetails(hconsignee.toUpperCase());
 		}
 		//通知人提单描述
 		String hnotify = getSheetCellValueAsString(sheet, 13, 0);
 		if (ObjectUtils.isNotNull(hnotify)) {
-			seaBillsDetail.setHnotifyDetails(hnotify);
+			seaBillsDetail.setHnotifyDetails(hnotify.toUpperCase());
 		}
 		//提单号
 		String mblno = getSheetCellValueAsString(sheet, 6, 10);
 		if (ObjectUtils.isNotNull(mblno)) {
-			bills.setMblno(mblno);
+			bills.setMblno(mblno.trim());
 		}
 		//VSL/VOY
 		String vslVoy = getSheetCellValueAsString(sheet, 17, 11);
@@ -1475,6 +1476,13 @@ public class TemplateImportServiceImpl implements ITemplateImportService {
 			bills.setMarks(marks);
 		}
 		if (!"KHTS".equals(bills.getBusinessType())) {
+			List<Containers> containersListOld = containersService.list(new LambdaQueryWrapper<Containers>()
+				.eq(Containers::getTenantId, AuthUtil.getTenantId())
+				.eq(Containers::getIsDeleted, 0)
+				.eq(Containers::getPid, billId));
+			if (!containersListOld.isEmpty()) {
+				containersService.removeByIds(containersListOld.stream().map(Containers::getId).collect(Collectors.toList()));
+			}
 			List<Containers> containersList = new ArrayList<>();
 			BigDecimal sumQty = new BigDecimal(0L);
 			BigDecimal sumGw = new BigDecimal(0L);
@@ -1538,7 +1546,7 @@ public class TemplateImportServiceImpl implements ITemplateImportService {
 					double v1 = getSheetCellValueAsDouble(sheet, r, cellIndex + 7);
 					containers.setMeasurement(BigDecimal.valueOf(v1));
 					sumVol = sumVol.add(new BigDecimal(v1));
-					if (tare + w1 != vgmWeight) {
+					if (containers.getGrossWeight().add(containers.getTare()).compareTo(containers.getVgmWeight()) != 0) {
 						throw new RuntimeException("箱号:" + containers.getCntrNo() + "VGM总重!=箱皮重+毛重");
 					}
 					containersList.add(containers);

+ 7 - 2
blade-service/blade-los/src/main/java/org/springblade/los/business/update/controller/UpdateController.java

@@ -79,6 +79,11 @@ public class UpdateController extends BladeController {
 			.eq(ObjectUtils.isNotNull(update.getRetrievalType()), Update::getRetrievalType, update.getRetrievalType())
 			.like(ObjectUtils.isNotNull(update.getRetrievalValue()), Update::getRetrievalValue, update.getRetrievalValue())
 			.orderByDesc(Update::getCreateTime);
+		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+			lambdaQueryWrapper.eq(Update::getBranchId, AuthUtil.getDeptId());
+		} else {
+			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(update.getBranchId()), Update::getBranchId, update.getBranchId());
+		}
 		IPage<Update> pages = updateService.page(Condition.getPage(query), lambdaQueryWrapper);
 		return R.data(pages);
 	}
@@ -152,7 +157,7 @@ public class UpdateController extends BladeController {
 	@PostMapping("/checkUpdate")
 	@ApiOperationSupport(order = 13)
 	@RepeatSubmit
-	public R checkUpdate(@RequestBody Update update) throws Exception{
+	public R checkUpdate(@RequestBody Update update) throws Exception {
 		Update declare = updateService.checkUpdate(update);
 		return R.data(declare);
 	}
@@ -163,7 +168,7 @@ public class UpdateController extends BladeController {
 	@PostMapping("/passCheck")
 	@ApiOperationSupport(order = 14)
 	@RepeatSubmit
-	public R passCheck(@ApiParam(value = "主表id", required = true) @RequestParam Long id) throws Exception{
+	public R passCheck(@ApiParam(value = "主表id", required = true) @RequestParam Long id) throws Exception {
 		return updateService.passCheck(id);
 	}
 

+ 35 - 2
blade-service/blade-los/src/main/java/org/springblade/los/business/update/service/impl/UpdateServiceImpl.java

@@ -159,6 +159,20 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public R submit(Update update) {
+		String branchId;
+		String deptName = "";
+		if (ObjectUtils.isNull(update.getBranchId())) {
+			branchId = AuthUtil.getDeptId();
+		} else {
+			branchId = update.getBranchId();
+		}
+		//获取部门ids对应中文名
+		R<String> res = sysClient.getDeptName(Long.parseLong(branchId));
+		if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+			deptName = res.getData();
+		}
+		update.setBranchId(branchId);
+		update.setBranchName(deptName);
 		if (update.getId() == null) {
 			update.setCreateTime(new Date());
 			update.setCreateUser(AuthUtil.getUserId());
@@ -173,6 +187,8 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 		if (ObjectUtils.isNotNull(update.getUpdateItemList()) && !update.getUpdateItemList().isEmpty()) {
 			for (UpdateItem item : update.getUpdateItemList()) {
 				item.setPid(update.getId());
+				item.setBranchId(branchId);
+				item.setBranchName(deptName);
 				if (item.getId() == null) {
 					item.setCreateTime(new Date());
 					item.setCreateUser(AuthUtil.getUserId());
@@ -190,12 +206,21 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 
 	@Override
 	public Update getUpdate(Update update) {
-		Update update1 = baseMapper.selectOne(new LambdaQueryWrapper<Update>()
+		LambdaQueryWrapper<Update> lambdaQueryWrapper = new LambdaQueryWrapper<Update>()
 			.eq(Update::getIsDeleted, 0)
 			.eq(Update::getTenantId, AuthUtil.getTenantId())
 			.eq(Update::getBusinessType, update.getBusinessType())
 			.eq(Update::getStatus, 0)
-			.last("LIMIT 1"));
+			.last("LIMIT 1");
+		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+			lambdaQueryWrapper.eq(Update::getBranchId, AuthUtil.getDeptId());
+		} else {
+			if (ObjectUtils.isNull(update.getBranchId())){
+				throw new RuntimeException("请选择所属公司");
+			}
+			lambdaQueryWrapper.eq(Update::getBranchId, update.getBranchId());
+		}
+		Update update1 = baseMapper.selectOne(lambdaQueryWrapper);
 		if (update1 == null) {
 			throw new RuntimeException("请先维护配置文件");
 		}
@@ -204,6 +229,7 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 			.eq(UpdateItem::getIsDeleted, 0)
 			.eq(UpdateItem::getStatus, 1)
 			.eq(UpdateItem::getPid, update1.getId())
+			.eq(UpdateItem::getBranchId, update1.getBranchId())
 		);
 		for (UpdateItem item : updateItemList) {
 			item.setId(null);
@@ -331,6 +357,8 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 				lambdaQueryWrapper.eq(Bills::getBillNo, update.getRetrievalValue());
 			} else if ("2".equals(update.getRetrievalType())) {
 				lambdaQueryWrapper.eq(Bills::getMblno, update.getRetrievalValue());
+			}else if ("3".equals(update.getRetrievalType())) {
+				lambdaQueryWrapper.eq(Bills::getHblno, update.getRetrievalValue());
 			}
 			lambdaQueryWrapper.last("limit 1");
 			bills = billsService.getOne(lambdaQueryWrapper);
@@ -2180,6 +2208,11 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 				lambdaQueryWrapper.eq(Bills::getBillNo, update.getRetrievalValue());
 			} else if ("2".equals(update.getRetrievalType())) {
 				lambdaQueryWrapper.eq(Bills::getMblno, update.getRetrievalValue());
+			}else if ("3".equals(update.getRetrievalType())) {
+				lambdaQueryWrapper.eq(Bills::getHblno, update.getRetrievalValue());
+			}
+			if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+				lambdaQueryWrapper.eq(Bills::getBranchId, AuthUtil.getDeptId());
 			}
 			lambdaQueryWrapper.last("limit 1");
 			Bills bills = billsService.getOne(lambdaQueryWrapper);

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

@@ -569,19 +569,45 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 		}
 		if (!list.isEmpty()) {
 			this.saveOrUpdateBatch(list);
+			//应付
+			int statusC = 0;
+			if (list.stream().anyMatch(e -> "C".equals(e.getDc()))) {
+				statusC = 1;
+			}
+			//应收
+			int statusD = 0;
+			if (list.stream().anyMatch(e -> "D".equals(e.getDc()))) {
+				statusD = 1;
+			}
+			if (1 == statusD && 0 == statusC) {
+				bills.setAccountStatus(1);
+			} else if (0 == statusD && 1 == statusC) {
+				bills.setAccountStatus(2);
+			}
 			BigDecimal amountDr;
 			BigDecimal amountCr;
 			BigDecimal amountProfit;
 			BigDecimal amountDrUsd;
 			BigDecimal amountCrUsd;
 			BigDecimal amountProfitUsd;
-			BigDecimal amountDrLoc = new BigDecimal("0.00");
-			BigDecimal amountCrLoc = new BigDecimal("0.00");
+			BigDecimal amountDrLoc;
+			BigDecimal amountCrLoc;
 			BigDecimal amountProfitLoc;
-			amountDr = list.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-			amountDrUsd = list.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-			amountCr = list.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-			amountCrUsd = list.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			if ("D".equals(list.get(0).getDc())) {
+				amountDr = list.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				amountDrUsd = list.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				amountDrLoc = list.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
+				amountCr = bills.getAmountCr();
+				amountCrUsd = bills.getAmountCrUsd();
+				amountCrLoc = bills.getAmountCrLoc();
+			} else {
+				amountCr = list.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				amountCrUsd = list.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				amountCrLoc = list.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
+				amountDr = bills.getAmountDr();
+				amountDrUsd = bills.getAmountDrUsd();
+				amountDrLoc = bills.getAmountDrLoc();
+			}
 			//利润 = 收 - 付
 			amountProfit = amountDr.subtract(amountCr);
 			amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
@@ -692,102 +718,23 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 			amountCrUsd = list.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 
 			if (status) {
-				//主单应加上分单费用
-				/*if ("MM".equals(bills.getBillType())) {
-					List<Bills> details = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
-						.eq(Bills::getTenantId, AuthUtil.getTenantId())
-						.eq(Bills::getIsDeleted, 0)
-						.eq(Bills::getMasterId, bills.getId()));
-					if (!details.isEmpty()) {
-						amountDr = amountDr.add(details.stream().map(Bills::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						amountCr = amountCr.add(details.stream().map(Bills::getAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						amountDrUsd = amountDrUsd.add(details.stream().map(Bills::getAmountDrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						amountCrUsd = amountCrUsd.add(details.stream().map(Bills::getAmountCrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						amountDrLoc = amountDrLoc.add(details.stream().map(Bills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						amountCrLoc = amountCrLoc.add(details.stream().map(Bills::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-
-					}
-				} else if ("MH".equals(bills.getBillType())) {
-					Bills details = billsMapper.selectById(bills.getMasterId());
-					//重新计算主单合计
-					if (details != null) {
-						BigDecimal amountDrM = new BigDecimal("0.00");
-						BigDecimal amountCrM = new BigDecimal("0.00");
-						BigDecimal amountProfitM;
-						BigDecimal amountDrUsdM = new BigDecimal("0.00");
-						BigDecimal amountCrUsdM = new BigDecimal("0.00");
-						BigDecimal amountProfitUsdM;
-						BigDecimal amountDrLocM = new BigDecimal("0.00");
-						BigDecimal amountCrLocM = new BigDecimal("0.00");
-						BigDecimal amountProfitLocM;
-						BigDecimal quantityM = new BigDecimal("0.00");
-						BigDecimal grossWeightM = new BigDecimal("0.00");
-						BigDecimal measurementM = new BigDecimal("0.00");
-						List<FeeCenter> feeCenters = baseMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
-							.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-							.eq(FeeCenter::getIsDeleted, 0)
-							.eq(FeeCenter::getPid, details.getId()));
-						for (FeeCenter item : feeCenters) {
-							if ("C".equals(item.getDc())) {
-								if (exrateType.equals(item.getCurCode())) {
-									amountCrM = amountCrM.add(item.getAmount());
-									amountCrLocM = amountCrLocM.add(item.getAmount());
-								} else {
-									amountCrUsdM = amountCrUsdM.add(item.getAmount());
-									amountCrLocM = amountCrLocM.add(item.getAmount().multiply(item.getExrate()));
-								}
-							} else {
-								if (exrateType.equals(item.getCurCode())) {
-									amountDrM = amountDrM.add(item.getAmount());
-									amountDrLocM = amountDrLocM.add(item.getAmount());
-								} else {
-									amountDrUsdM = amountDrUsdM.add(item.getAmount());
-									amountDrLocM = amountDrLocM.add(item.getAmount().multiply(item.getExrate()));
-								}
-							}
-						}
-						List<Bills> billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
-							.eq(Bills::getTenantId, AuthUtil.getTenantId())
-							.eq(Bills::getIsDeleted, 0)
-							.eq(Bills::getMasterId, details.getId()));
-						Bills finalBills = bills;
-						List<Bills> billsLists = billsList.stream().filter(e -> !e.getId().equals(finalBills.getId())).collect(Collectors.toList());
-						if (!billsLists.isEmpty()) {
-							amountDrM = amountDrM.add(billsLists.stream().map(Bills::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-							amountCrM = amountCrM.add(billsLists.stream().map(Bills::getAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-							amountDrUsdM = amountDrUsdM.add(billsLists.stream().map(Bills::getAmountDrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-							amountCrUsdM = amountCrUsdM.add(billsLists.stream().map(Bills::getAmountCrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-							amountDrLocM = amountDrLocM.add(billsLists.stream().map(Bills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-							amountCrLocM = amountCrLocM.add(billsLists.stream().map(Bills::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-							quantityM = quantityM.add(billsLists.stream().map(Bills::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-							grossWeightM = grossWeightM.add(billsLists.stream().map(Bills::getGrossWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-							measurementM = measurementM.add(billsLists.stream().map(Bills::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						}
-						amountDrM = amountDrM.add(amountDr);
-						amountCrM = amountCrM.add(amountCr);
-						amountDrUsdM = amountDrUsdM.add(amountDrUsd);
-						amountCrUsdM = amountCrUsdM.add(amountCrUsd);
-						amountDrLocM = amountDrLocM.add(amountDrLoc);
-						amountCrLocM = amountCrLocM.add(amountCrLoc);
-						//利润 = 收 - 付
-						amountProfitM = amountDrM.subtract(amountCrM);
-						amountProfitUsdM = amountDrUsdM.subtract(amountCrUsdM);
-						amountProfitLocM = amountDrLocM.subtract(amountCrLocM);
-						details.setAmountDr(amountDrM);
-						details.setAmountCr(amountCrM);
-						details.setAmountProfit(amountProfitM);
-						details.setAmountDrUsd(amountDrUsdM);
-						details.setAmountCrUsd(amountCrUsdM);
-						details.setAmountProfitUsd(amountProfitUsdM);
-						details.setAmountDrLoc(amountDrLocM);
-						details.setAmountCrLoc(amountCrLocM);
-						details.setAmountProfitLoc(amountProfitLocM);
-						details.setQuantity(quantityM);
-						details.setGrossWeight(grossWeightM);
-						details.setMeasurement(measurementM);
-						billsMapper.updateById(details);
-					}
-				}*/
+				//应付
+				int statusC = 0;
+				if (list.stream().anyMatch(e -> "C".equals(e.getDc()))) {
+					statusC = 1;
+				}
+				//应收
+				int statusD = 0;
+				if (list.stream().anyMatch(e -> "D".equals(e.getDc()))) {
+					statusD = 1;
+				}
+				if (1 == statusD && 0 == statusC) {
+					bills.setAccountStatus(1);
+				} else if (0 == statusD && 1 == statusC) {
+					bills.setAccountStatus(2);
+				} else {
+					bills.setAccountStatus(3);
+				}
 				//利润 = 收 - 付
 				amountProfit = amountDr.subtract(amountCr);
 				amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
@@ -1432,19 +1379,46 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 				list1.add(feeCenter);
 			}
 			if (!list1.isEmpty()) {
+
+				//应付
+				int statusC = 0;
+				if (list.stream().anyMatch(e -> "C".equals(e.getDc()))) {
+					statusC = 1;
+				}
+				//应收
+				int statusD = 0;
+				if (list.stream().anyMatch(e -> "D".equals(e.getDc()))) {
+					statusD = 1;
+				}
+				if (1 == statusD && 0 == statusC) {
+					bills.setAccountStatus(1);
+				} else if (0 == statusD && 1 == statusC) {
+					bills.setAccountStatus(2);
+				}
 				BigDecimal amountDr;
 				BigDecimal amountCr;
 				BigDecimal amountProfit;
 				BigDecimal amountDrUsd;
 				BigDecimal amountCrUsd;
 				BigDecimal amountProfitUsd;
-				BigDecimal amountDrLoc = new BigDecimal("0.00");
-				BigDecimal amountCrLoc = new BigDecimal("0.00");
+				BigDecimal amountDrLoc;
+				BigDecimal amountCrLoc;
 				BigDecimal amountProfitLoc;
-				amountDr = list1.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountDrUsd = list1.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountCr = list1.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountCrUsd = list1.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				if ("D".equals(list.get(0).getDc())) {
+					amountDr = list.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountDrUsd = list.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountDrLoc = list.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountCr = bills.getAmountCr();
+					amountCrUsd = bills.getAmountCrUsd();
+					amountCrLoc = bills.getAmountCrLoc();
+				} else {
+					amountCr = list.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountCrUsd = list.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountCrLoc = list.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountDr = bills.getAmountDr();
+					amountDrUsd = bills.getAmountDrUsd();
+					amountDrLoc = bills.getAmountDrLoc();
+				}
 				//利润 = 收 - 付
 				amountProfit = amountDr.subtract(amountCr);
 				amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
@@ -1622,19 +1596,45 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 
 			}
 			if (!list1.isEmpty()) {
+				//应付
+				int statusC = 0;
+				if (list.stream().anyMatch(e -> "C".equals(e.getDc()))) {
+					statusC = 1;
+				}
+				//应收
+				int statusD = 0;
+				if (list.stream().anyMatch(e -> "D".equals(e.getDc()))) {
+					statusD = 1;
+				}
+				if (1 == statusD && 0 == statusC) {
+					bills.setAccountStatus(1);
+				} else if (0 == statusD && 1 == statusC) {
+					bills.setAccountStatus(2);
+				}
 				BigDecimal amountDr;
 				BigDecimal amountCr;
 				BigDecimal amountProfit;
 				BigDecimal amountDrUsd;
 				BigDecimal amountCrUsd;
 				BigDecimal amountProfitUsd;
-				BigDecimal amountDrLoc = new BigDecimal("0.00");
-				BigDecimal amountCrLoc = new BigDecimal("0.00");
+				BigDecimal amountDrLoc;
+				BigDecimal amountCrLoc;
 				BigDecimal amountProfitLoc;
-				amountDr = list1.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountDrUsd = list1.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountCr = list1.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountCrUsd = list1.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				if ("D".equals(list.get(0).getDc())) {
+					amountDr = list.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountDrUsd = list.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountDrLoc = list.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountCr = bills.getAmountCr();
+					amountCrUsd = bills.getAmountCrUsd();
+					amountCrLoc = bills.getAmountCrLoc();
+				} else {
+					amountCr = list.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountCrUsd = list.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountCrLoc = list.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountDr = bills.getAmountDr();
+					amountDrUsd = bills.getAmountDrUsd();
+					amountDrLoc = bills.getAmountDrLoc();
+				}
 				//利润 = 收 - 付
 				amountProfit = amountDr.subtract(amountCr);
 				amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
@@ -1794,19 +1794,45 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 				}
 			}
 			if (!list1.isEmpty()) {
+				//应付
+				int statusC = 0;
+				if (list.stream().anyMatch(e -> "C".equals(e.getDc()))) {
+					statusC = 1;
+				}
+				//应收
+				int statusD = 0;
+				if (list.stream().anyMatch(e -> "D".equals(e.getDc()))) {
+					statusD = 1;
+				}
+				if (1 == statusD && 0 == statusC) {
+					bills.setAccountStatus(1);
+				} else if (0 == statusD && 1 == statusC) {
+					bills.setAccountStatus(2);
+				}
 				BigDecimal amountDr;
 				BigDecimal amountCr;
 				BigDecimal amountProfit;
 				BigDecimal amountDrUsd;
 				BigDecimal amountCrUsd;
 				BigDecimal amountProfitUsd;
-				BigDecimal amountDrLoc = new BigDecimal("0.00");
-				BigDecimal amountCrLoc = new BigDecimal("0.00");
+				BigDecimal amountDrLoc;
+				BigDecimal amountCrLoc;
 				BigDecimal amountProfitLoc;
-				amountDr = list1.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountDrUsd = list1.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountCr = list1.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountCrUsd = list1.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				if ("D".equals(list.get(0).getDc())) {
+					amountDr = list.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountDrUsd = list.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountDrLoc = list.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountCr = bills.getAmountCr();
+					amountCrUsd = bills.getAmountCrUsd();
+					amountCrLoc = bills.getAmountCrLoc();
+				} else {
+					amountCr = list.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountCrUsd = list.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountCrLoc = list.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountDr = bills.getAmountDr();
+					amountDrUsd = bills.getAmountDrUsd();
+					amountDrLoc = bills.getAmountDrLoc();
+				}
 				//利润 = 收 - 付
 				amountProfit = amountDr.subtract(amountCr);
 				amountProfitUsd = amountDrUsd.subtract(amountCrUsd);