Explorar el Código

1.箱档案导入接口逻辑修改
3.发送edi接口逻辑修改
4.增加用箱计划复制接口
5.财务付费申请,发票申请,结算中心文件同步
6.业务修改增加报表打印接口
7.财务明细允许多个分公司一起结算
8.分单添加主单,分单自动同步主单付费方式,签单地点
9.提取成本-分单费用名称修改
10.邮箱地址增加模板导入功能

纪新园 hace 6 meses
padre
commit
013d902be3
Se han modificado 23 ficheros con 415 adiciones y 110 borrados
  1. 30 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/email/dto/EmailAddressExcel.java
  2. 13 36
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/FeeCenterUpdateRecord.java
  3. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/Util/MagicValues.java
  4. 2 2
      blade-service/blade-los/src/main/java/org/springblade/los/Util/Regular_ONE.java
  5. 17 4
      blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java
  6. 8 0
      blade-service/blade-los/src/main/java/org/springblade/los/box/controller/UseBoxPlanController.java
  7. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/IUseBoxPlanService.java
  8. 48 10
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/ArchivesServiceImpl.java
  9. 33 0
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/UseBoxPlanServiceImpl.java
  10. 2 2
      blade-service/blade-los/src/main/java/org/springblade/los/business/amends/service/impl/AmendsServiceImpl.java
  11. 53 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java
  12. 1 4
      blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java
  13. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/edi/dto/InttraSoDto.java
  14. 2 1
      blade-service/blade-los/src/main/java/org/springblade/los/edi/service/impl/EDISenderServiceImpl.java
  15. 8 7
      blade-service/blade-los/src/main/java/org/springblade/los/edi/service/impl/EdiTypesServiceImpl.java
  16. 33 0
      blade-service/blade-los/src/main/java/org/springblade/los/email/controller/EmailAddressController.java
  17. 5 0
      blade-service/blade-los/src/main/java/org/springblade/los/email/service/IEmailAddressService.java
  18. 44 3
      blade-service/blade-los/src/main/java/org/springblade/los/email/service/impl/EmailAddressServiceImpl.java
  19. 18 10
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FeeCenterUpdateRecordController.java
  20. 2 9
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java
  21. 5 2
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterUpdateRecordServiceImpl.java
  22. 6 6
      blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/impl/FinInvoicesServiceImpl.java
  23. 80 12
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java

+ 30 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/email/dto/EmailAddressExcel.java

@@ -0,0 +1,30 @@
+package org.springblade.los.email.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author :jixinyuan
+ * @date : 2025/7/24
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class EmailAddressExcel {
+
+	/**
+	 * 收件人
+	 */
+	@ExcelProperty(value = "收件人(必填)")
+	private String recipientUrl;
+	/**
+	 * 收件人姓名
+	 */
+	@ExcelProperty(value = "收件人姓名(必填)")
+	private String recipientName;
+}

+ 13 - 36
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/FeeCenterUpdateRecord.java

@@ -22,6 +22,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springblade.los.check.entity.LosAuditPathsLevels;
+import org.springblade.system.entity.Dept;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -134,25 +135,10 @@ public class FeeCenterUpdateRecord implements Serializable {
 	@ApiModelProperty(value = "客户英文名称")
 	private String corpEnName;
 	/**
-	 * 主表客户 id
+	 * 结算单位类别
 	 */
-	@ApiModelProperty(value = "主表客户 id")
-	private Long billCorpId;
-	/**
-	 * 主表客户中文名称
-	 */
-	@ApiModelProperty(value = "主表客户中文名称")
-	private String billCorpCnName;
-	/**
-	 * 主表客户英文名称
-	 */
-	@ApiModelProperty(value = "主表客户英文名称")
-	private String billCorpEnName;
-	/**
-	 * 主表客户简称
-	 */
-	@ApiModelProperty(value = "主表客户简称")
-	private String billShortName;
+	@ApiModelProperty(value = "结算单位类别")
+	private String corpType;
 	/**
 	 * MB/L NO
 	 */
@@ -279,25 +265,10 @@ public class FeeCenterUpdateRecord implements Serializable {
 	@ApiModelProperty(value = "修改后客户英文名称")
 	private String corpEnNameUpdate;
 	/**
-	 * 修改后主表客户 id
-	 */
-	@ApiModelProperty(value = "修改后主表客户 id")
-	private Long billCorpIdUpdate;
-	/**
-	 * 修改后主表客户中文名称
+	 * 结算单位类别
 	 */
-	@ApiModelProperty(value = "修改后主表客户中文名称")
-	private String billCorpCnNameUpdate;
-	/**
-	 * 修改后主表客户英文名称
-	 */
-	@ApiModelProperty(value = "修改后主表客户英文名称")
-	private String billCorpEnNameUpdate;
-	/**
-	 * 修改后主表客户简称
-	 */
-	@ApiModelProperty(value = "修改后主表客户简称")
-	private String billShortNameUpdate;
+	@ApiModelProperty(value = "修改后结算单位类别")
+	private String corpTypeUpdate;
 	/**
 	 * 修改后费用 Id
 	 */
@@ -380,4 +351,10 @@ public class FeeCenterUpdateRecord implements Serializable {
 	@TableField(exist = false)
 	private List<LosAuditPathsLevels> auditPathsLevels;
 
+	/**
+	 * 报表表头信息
+	 */
+	@TableField(exist = false)
+	private Dept dept;
+
 }

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/Util/MagicValues.java

@@ -22,6 +22,8 @@ public class MagicValues {
 	public static final String PAID_APPLICATION = "付费申请";
 	public static final String RECONCILIATION_CENTER = "对账中心";
 	public static final String INVOICE_APPLICATION = "发票申请";
+	public static final String COST_APPLY_MODIFY = "费用-申请修改";
+	public static final String COST_APPLY_DELETE = "费用-申请删除";
 	public static final String CHARGE_PAID_OFFSET = "收付相抵";
 	public static final String CHARGE_SETTLEMENT = "收费结算";
 	public static final String CHARGE = "收费";

+ 2 - 2
blade-service/blade-los/src/main/java/org/springblade/los/Util/Regular_ONE.java

@@ -324,7 +324,7 @@ public class Regular_ONE {
 		}
 
 		if("SI".equals(type)) {
-			if (ObjectUtils.isNull(ediData.getLoadedCntrs()) || ediData.getLoadedCntrs().size() == 0) {
+			if (ObjectUtils.isNull(ediData.getLoadedCntrs()) || ediData.getLoadedCntrs().isEmpty()) {
 				msg += "配箱箱号,";
 			}else{
 				List<Map<String, Object>> mapList = ediData.getLoadedCntrs();
@@ -337,7 +337,7 @@ public class Regular_ONE {
 						msg += "配箱铅封号,";
 						break;
 					}
-					if(ObjectUtils.isNull(cntr.get("commodityList")) || ((List<ContainersCommodity>)cntr.get("commodityList")).size()==0){
+					if(ObjectUtils.isNull(cntr.get("commodityList")) || ((List<ContainersCommodity>) cntr.get("commodityList")).isEmpty()){
 						msg += "箱内货物,";
 						break;
 					}

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

@@ -56,7 +56,9 @@ import org.springblade.los.finance.agreement.service.IAgreementPriceItemsService
 import org.springblade.los.finance.agreement.service.IAgreementPriceService;
 import org.springblade.los.finance.fee.dto.FeeCenterReports;
 import org.springblade.los.finance.fee.entity.FeeCenter;
+import org.springblade.los.finance.fee.entity.FeeCenterUpdateRecord;
 import org.springblade.los.finance.fee.service.IFeeCenterService;
+import org.springblade.los.finance.fee.service.IFeeCenterUpdateRecordService;
 import org.springblade.los.finance.invoices.entity.FinInvoices;
 import org.springblade.los.finance.invoices.entity.FinInvoicesItems;
 import org.springblade.los.finance.invoices.service.IFinInvoicesItemsService;
@@ -137,6 +139,8 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 
 	private final IEmailAddressService emailAddressService;
 
+	private final IFeeCenterUpdateRecordService feeCenterUpdateRecordService;
+
 	@Override
 	public IPage<ReportsVO> selectReportsPage(IPage<ReportsVO> page, ReportsVO reports) {
 		return page.setRecords(baseMapper.selectReportsPage(page, reports));
@@ -707,6 +711,15 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				} else {
 					map.put(MagicValues.DATA, null);
 				}
+			} else if (MagicValues.COST.equals(reportCode)
+				&& (MagicValues.COST_APPLY_MODIFY.equals(groupCode) || MagicValues.COST_APPLY_DELETE.equals(groupCode))) {
+				FeeCenterUpdateRecord feeCenterUpdateRecord = feeCenterUpdateRecordService.getById(billId);
+				if (feeCenterUpdateRecord != null) {
+					feeCenterUpdateRecord.setDept(dept);
+					map.put(MagicValues.DATA, feeCenterUpdateRecord);
+				} else {
+					map.put(MagicValues.DATA, null);
+				}
 			}
 		}
 		return R.data(map);
@@ -3690,13 +3703,13 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				emailAddress.setRecipientName("");
 			}
 			if (!emailAddressList.isEmpty()) {
-                emailAddressList.stream().filter(e -> !e.getRecipientUrl().equals(item))
-                        .findFirst().ifPresent(emailAddresDetail -> addressList.add(emailAddress));
-            } else {
+				emailAddressList.stream().filter(e -> !e.getRecipientUrl().equals(item))
+					.findFirst().ifPresent(emailAddresDetail -> addressList.add(emailAddress));
+			} else {
 				addressList.add(emailAddress);
 			}
 		}
-		if (!addressList.isEmpty()){
+		if (!addressList.isEmpty()) {
 			emailAddressService.saveBatch(addressList);
 		}
 		return R.data("发送成功");

+ 8 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/controller/UseBoxPlanController.java

@@ -142,4 +142,12 @@ public class UseBoxPlanController extends BladeController {
 	public R submitUseBoxPlan(@Valid @RequestBody UseBoxPlan useBoxPlan) {
 		return useBoxPlanService.submitUseBoxPlan(useBoxPlan);
 	}
+	/**
+	 * 详情
+	 */
+	@GetMapping("/copy")
+	public R<UseBoxPlan> copy(UseBoxPlan useBoxPlan) {
+		UseBoxPlan detail = useBoxPlanService.copy(useBoxPlan);
+		return R.data(detail);
+	}
 }

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/service/IUseBoxPlanService.java

@@ -45,4 +45,6 @@ public interface IUseBoxPlanService extends IService<UseBoxPlan> {
 	R submit(UseBoxPlan useBoxPlan);
 
 	R submitUseBoxPlan(UseBoxPlan useBoxPlan);
+
+	UseBoxPlan copy(UseBoxPlan useBoxPlan);
 }

+ 48 - 10
blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/ArchivesServiceImpl.java

@@ -213,17 +213,55 @@ public class ArchivesServiceImpl extends ServiceImpl<ArchivesMapper, Archives> i
 					archives.setStationId(corps.getId());
 				}
 			}
-
-			//租赁公司
-			if (ObjectUtils.isNotNull(archives.getLeasingCompany())) {
-				CorpsDesc detail = corpsDescClient.getCorpsDesc(archives.getLeasingCompany(), "KH");
-				if (ObjectUtils.isNotNull(detail)) {
-					archives.setLeasingCompany(detail.getCname());
-					archives.setLeasingCompanyId(detail.getId());
-				} else {
-					archives.setLeasingCompany(null);
-					archives.setLeasingCompanyId(null);
+			//箱东
+			if (ObjectUtils.isNotNull(archives.getBoxEastName())) {
+				BCorps corps = corpsList.stream().filter(e -> e.getCnName().equals(archives.getBoxEastName()))
+					.findFirst().orElse(null);
+				if (corps != null) {
+					archives.setBoxEastName(corps.getCnName());
+					archives.setBoxEastId(corps.getId());
+				}
+			}
+			//造箱公司
+			if (ObjectUtils.isNotNull(archives.getBoxMakingCompany())) {
+				BCorps corps = corpsList.stream().filter(e -> e.getCnName().equals(archives.getBoxMakingCompany()))
+					.findFirst().orElse(null);
+				if (corps != null) {
+					archives.setBoxMakingCompany(corps.getCnName());
+					archives.setBoxMakingCompanyId(corps.getId());
+				}
+			}
+			//限制港口
+			if (ObjectUtils.isNotNull(archives.getRestrictedPortsName())) {
+				List<String> restrictedPorts = Func.toStrList(archives.getRestrictedPortsName());
+				StringBuilder restrictedPortsStr = new StringBuilder();
+				StringBuilder restrictedPortsIdStr = new StringBuilder();
+				for (String item : restrictedPorts) {
+					BPorts bPorts = bPortsList.stream().filter(e -> e.getCnName().equals(item))
+						.findFirst().orElse(null);
+					if (bPorts != null) {
+						restrictedPortsStr.append(bPorts.getCnName()).append(",");
+						restrictedPortsIdStr.append(bPorts.getId()).append(",");
+					}
+				}
+				archives.setRestrictedPortsIds(restrictedPortsIdStr.substring(0, restrictedPortsIdStr.length() - 1));
+				archives.setRestrictedPortsName(restrictedPortsStr.substring(0, restrictedPortsStr.length() - 1));
+			}
+			//限制港口
+			if (ObjectUtils.isNotNull(archives.getRestrictingShippingCompaniesName())) {
+				List<String> restrictedShippingCompanies = Func.toStrList(archives.getRestrictingShippingCompaniesName());
+				StringBuilder restrictedrestrictedShippingCompaniesStr = new StringBuilder();
+				StringBuilder restrictedrestrictedShippingCompaniesIdStr = new StringBuilder();
+				for (String item : restrictedShippingCompanies) {
+					BPorts bPorts = bPortsList.stream().filter(e -> e.getCnName().equals(item))
+						.findFirst().orElse(null);
+					if (bPorts != null) {
+						restrictedrestrictedShippingCompaniesStr.append(bPorts.getCnName()).append(",");
+						restrictedrestrictedShippingCompaniesIdStr.append(bPorts.getId()).append(",");
+					}
 				}
+				archives.setRestrictingShippingCompaniesIds(restrictedrestrictedShippingCompaniesIdStr.substring(0, restrictedrestrictedShippingCompaniesIdStr.length() - 1));
+				archives.setRestrictingShippingCompaniesName(restrictedrestrictedShippingCompaniesStr.substring(0, restrictedrestrictedShippingCompaniesStr.length() - 1));
 			}
 			LambdaQueryWrapper<Archives> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 			lambdaQueryWrapper.eq(Archives::getIsDeleted, 0).eq(Archives::getTenantId, AuthUtil.getTenantId()).eq(Archives::getCode, archives.getCode());

+ 33 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/UseBoxPlanServiceImpl.java

@@ -197,4 +197,37 @@ public class UseBoxPlanServiceImpl extends ServiceImpl<UseBoxPlanMapper, UseBoxP
 		return R.data(detail);
 	}
 
+	@Override
+	public UseBoxPlan copy(UseBoxPlan useBoxPlan) {
+		if (useBoxPlan.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		UseBoxPlan detail = baseMapper.selectById(useBoxPlan.getId());
+		detail.setCreateTime(null);
+		detail.setCreateUser(null);
+		detail.setCreateUserName(null);
+		detail.setUpdateTime(null);
+		detail.setUpdateUser(null);
+		detail.setUpdateUserName(null);
+		detail.setId(null);
+		detail.setSysNo(null);
+		detail.setStatus(0);
+		List<UseBoxPlanItem> useBoxPlanItemList = useBoxPlanItemService.list(new LambdaQueryWrapper<UseBoxPlanItem>()
+			.eq(UseBoxPlanItem::getTenantId, AuthUtil.getTenantId())
+			.eq(UseBoxPlanItem::getIsDeleted, 0)
+			.eq(UseBoxPlanItem::getPid, useBoxPlan.getId()));
+		for (UseBoxPlanItem item : useBoxPlanItemList){
+			item.setCreateTime(null);
+			item.setCreateUser(null);
+			item.setCreateUserName(null);
+			item.setUpdateTime(null);
+			item.setUpdateUser(null);
+			item.setUpdateUserName(null);
+			item.setPid(null);
+			item.setId(null);
+		}
+		detail.setUseBoxPlanItemList(useBoxPlanItemList.isEmpty() ? new ArrayList<>() : useBoxPlanItemList);
+		return detail;
+	}
+
 }

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

@@ -114,7 +114,7 @@ public class AmendsServiceImpl extends ServiceImpl<AmendsMapper, Amends> impleme
 			deptName = res.getData();
 		}
 		amends.setBillDate(new Date());
-		if (ObjectUtils.isNotNull(amends.getBillDate())) {
+		/*if (ObjectUtils.isNotNull(amends.getBillDate())) {
 			LocalDate date = amends.getBillDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
 			int year = date.getYear();
 			int month = date.getMonthValue();
@@ -131,7 +131,7 @@ public class AmendsServiceImpl extends ServiceImpl<AmendsMapper, Amends> impleme
 					throw new RuntimeException(year + "年" + month + "月账期已锁定,保存失败");
 				}
 			}
-		}
+		}*/
 		if (amends.getId() == null) {
 			BusinessType businessType = bBusinessTypeService.getOne(new LambdaQueryWrapper<BusinessType>()
 				.eq(BusinessType::getTenantId, AuthUtil.getTenantId())

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

@@ -1264,7 +1264,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				item.setDestinationId(bills.getDestinationId());
 				item.setDestinationName(bills.getDestinationName());
 				item.setDestinationCode(bills.getDestinationCode());
-				item.setDestinationNamePrint(bills.getDestinationNamePrint());
 				item.setForeignAgencyId(bills.getForeignAgencyId());
 				item.setForeignAgencyCode(bills.getForeignAgencyCode());
 				item.setForeignAgencyCnName(bills.getForeignAgencyCnName());
@@ -1290,6 +1289,10 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				item.setCyContacts(bills.getCyContacts());
 				item.setCyTel(bills.getCyTel());
 				item.setCyRemarks(bills.getCyRemarks());
+				item.setHpaymode(bills.getHpaymode());
+				item.setMpaymode(bills.getMpaymode());
+				item.setIssueAtId(bills.getIssueAtId());
+				item.setIssueAt(bills.getIssueAt());
 				item.setUpdateTime(new Date());
 				item.setUpdateUser(AuthUtil.getUserId());
 				item.setUpdateUserName(AuthUtil.getUserName());
@@ -4338,6 +4341,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		copyBills.setMasterBillNo(null);
 		copyBills.setMasterId(null);
 		copyBills.setStatus(0);
+		copyBills.setHpaymode(detail.getMpaymode());
+		copyBills.setMpaymode(detail.getMpaymode());
 		copyBills.setBillStatus(0);
 		copyBills.setBillingStatus(0);
 		copyBills.setSplitOrderSum(0);
@@ -4394,6 +4399,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			seaBillsDetail.setCreateTime(new Date());
 			seaBillsDetailService.save(seaBillsDetail);
 		}
+		List<FeeCenter> feeCenterListSum = new ArrayList<>();
 		if (!preContainersList.isEmpty()) {
 			for (PreContainers containers : preContainersList) {
 				containers.setId(null);
@@ -4436,6 +4442,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 						feeCenter.setBranchId(branchId);
 						feeCenter.setBranchName(deptName);
 						feeCenters.add(feeCenter);
+						feeCenterListSum.add(feeCenter);
 					}
 					if (!"SOC".equals(copyBills.getBoxBelongsTo())) {
 						FeeCenter feeCenterD = this.addFeeCenterQuotation(copyBills, "C", count, feesD, item,
@@ -4445,6 +4452,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 							feeCenterD.setBranchId(branchId);
 							feeCenterD.setBranchName(deptName);
 							feeCenters.add(feeCenterD);
+							feeCenterListSum.add(feeCenter);
 						}
 					}
 					count++;
@@ -4476,6 +4484,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 					containers.setCreateDept(copyBills.getCreateDept());
 					containers.setCreateDeptName(copyBills.getCreateDeptName());
 					containers.setCreateTime(new Date());
+					feeCenterListSum.add(containers);
 				}
 				feeCenterService.saveBatch(feeCenterList);
 			}
@@ -4492,6 +4501,49 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				filesCenterService.saveBatch(filesCenterList);
 			}
 		}
+		if (!feeCenterListSum.isEmpty()){
+			String exrateType = currencyUtils.standardCurrency(copyBills.getBranchId());
+			BigDecimal amountDr;
+			BigDecimal amountCr;
+			BigDecimal amountProfit;
+			BigDecimal amountDrUsd;
+			BigDecimal amountCrUsd;
+			BigDecimal amountProfitUsd;
+			BigDecimal amountDrLoc;
+			BigDecimal amountCrLoc;
+			BigDecimal amountProfitLoc;
+			BigDecimal oceanFreightDr;
+			BigDecimal oceanFreightCr;
+			BigDecimal oceanFreightProfit;
+			amountDr = bills.getAmountDr().add(feeCenterListSum.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			amountDrUsd = bills.getAmountDrUsd().add(feeCenterListSum.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			amountDrLoc = bills.getAmountDrLoc().add(feeCenterListSum.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add));
+			amountCr = bills.getAmountCr().add(feeCenterListSum.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			amountCrUsd = bills.getAmountCrUsd().add(feeCenterListSum.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			amountCrLoc = bills.getAmountCrLoc().add(feeCenterListSum.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add));
+			oceanFreightDr = bills.getOceanFreightDr().add(feeCenterListSum.stream().filter(e -> "D".equals(e.getDc()) &&
+				"HYF".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add));
+			oceanFreightCr = bills.getOceanFreightCr().add(feeCenterListSum.stream().filter(e -> "C".equals(e.getDc()) &&
+				"HYF".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add));
+			oceanFreightProfit = oceanFreightDr.subtract(oceanFreightCr);
+			//利润 = 收 - 付
+			amountProfit = amountDr.subtract(amountCr);
+			amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
+			amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
+			copyBills.setAmountDr(amountDr);
+			copyBills.setOceanFreightDr(oceanFreightDr);
+			copyBills.setAmountCr(amountCr);
+			copyBills.setOceanFreightCr(oceanFreightCr);
+			copyBills.setAmountProfit(amountProfit);
+			copyBills.setOceanFreightProfit(oceanFreightProfit);
+			copyBills.setAmountDrUsd(amountDrUsd);
+			copyBills.setAmountCrUsd(amountCrUsd);
+			copyBills.setAmountProfitUsd(amountProfitUsd);
+			copyBills.setAmountDrLoc(amountDrLoc);
+			copyBills.setAmountCrLoc(amountCrLoc);
+			copyBills.setAmountProfitLoc(amountProfitLoc);
+			this.updateById(copyBills);
+		}
 		R<User> res = userClient.userInfoById(copyBills.getOperatorId());
 		if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
 			LocalDateTime now = LocalDateTime.now();

+ 1 - 4
blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java

@@ -1843,10 +1843,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 			feeCenter.setCorpCnName(feeCenterUpdateRecord.getCorpCnNameUpdate());
 			feeCenter.setCorpEnName(feeCenterUpdateRecord.getCorpEnNameUpdate());
 			feeCenter.setShortName(feeCenterUpdateRecord.getShortNameUpdate());
-			feeCenter.setBillCorpId(feeCenterUpdateRecord.getBillCorpIdUpdate());
-			feeCenter.setBillCorpCnName(feeCenterUpdateRecord.getBillCorpCnNameUpdate());
-			feeCenter.setBillCorpEnName(feeCenterUpdateRecord.getBillCorpEnNameUpdate());
-			feeCenter.setBillShortName(feeCenterUpdateRecord.getBillShortNameUpdate());
+			feeCenter.setCorpType(feeCenterUpdateRecord.getCorpTypeUpdate());
 			feeCenter.setFeeId(feeCenterUpdateRecord.getFeeIdUpdate());
 			feeCenter.setFeeCode(feeCenterUpdateRecord.getFeeCodeUpdate());
 			feeCenter.setFeeCnName(feeCenterUpdateRecord.getFeeCnNameUpdate());

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/edi/dto/InttraSoDto.java

@@ -864,7 +864,7 @@ public class InttraSoDto {
 		if(ObjectUtils.isNull(this.ediTypes)){
 			return false;
 		}else {
-			return ("HYCK".equals(this.ediTypes.getType()) && "ZIM-BOOKING".equals(ediTypes.getCode()));
+			return ("HYCK".equals(this.ediTypes.getType()) && "中外运".equals(ediTypes.getCode()));
 		}
 	}
 	public Boolean ediTypeIsHYCK_ZIM_SI(){

+ 2 - 1
blade-service/blade-los/src/main/java/org/springblade/los/edi/service/impl/EDISenderServiceImpl.java

@@ -194,6 +194,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
 			}
 		}
 		if (ObjectUtils.isNull(fileName)) {
+			fileName += (ObjectUtils.isNotNull(edi.getMblNo()) ? edi.getMblNo() : "");
 			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
 			Date date = new Date();
 			fileName = sdf.format(date) + ".txt";
@@ -2952,7 +2953,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
 			}
 
 			String localFolder = genEdiLocalFolder(oneSoDto, ediParamCarrier);
-			String localFileName = genEdiLocalFileName(oneSoDto, ediParamCarrier);
+			String localFileName = genEdiLocalFileName(oneSoDto, null);
 			File file = new File(localFolder, localFileName);
 			file.createNewFile();
 			// 打开文件输出流进行写入操作

+ 8 - 7
blade-service/blade-los/src/main/java/org/springblade/los/edi/service/impl/EdiTypesServiceImpl.java

@@ -25,7 +25,8 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
-import org.springblade.los.Util.*;
+import org.springblade.los.Util.RegularUtils;
+import org.springblade.los.Util.Regular_ONE;
 import org.springblade.los.basic.cntr.entity.BCntrTypes;
 import org.springblade.los.basic.cntr.service.IBCntrTypesService;
 import org.springblade.los.basic.corps.entity.BCorps;
@@ -598,12 +599,12 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 
 				String ediCode = RegularUtils.getEdiCode(ediCodeName, bCntrTypes.getExtendedData());
 				Map<String, Object> map = new HashMap<>();
-				map.put("quantity", item.getQuantity());
+				map.put("quantity", ObjectUtils.isNull(item.getQuantity()) ? new BigDecimal("0.00") : item.getQuantity());
 				// wfg 皮重取值
 				map.put("tareWeight", new BigDecimal("0"));
 				map.put("netWeight", new BigDecimal("0"));
-				map.put("grossWeight", item.getGrossWeight());
-				map.put("volume", item.getMeasurement());
+				map.put("grossWeight", ObjectUtils.isNull(item.getGrossWeight()) ? new BigDecimal("0.00") : item.getGrossWeight());
+				map.put("volume", ObjectUtils.isNull(item.getMeasurement()) ? new BigDecimal("0.00") : item.getMeasurement());
 				map.put("sizeType", ediCode);
 				map.put("cntrTypeName", RegularUtils.forceEmpty(bCntrTypes.getEnName()));
 				map.put("cntrNo", RegularUtils.forceEmpty(item.getCntrNo()));
@@ -964,7 +965,8 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 						return R.fail(e.getMessage());
 					}
 				}
-			} else*/ if (inttraSoDto.ediTypeIsHYCK_ZIM_Booking()) {
+			} else*/
+			if (inttraSoDto.ediTypeIsHYCK_ZIM_Booking()) {
 				status = Regular_ONE.notNullOneBookingDto(inttraSoDto, "SO");
 				if ("200".equals(status.get("code").toString())) {
 					try {
@@ -1027,8 +1029,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 						return R.fail(e.getMessage());
 					}
 				}
-			}*/
-			else {
+			}*/ else {
 				return R.fail("EDI 未实现!");
 			}
 

+ 33 - 0
blade-service/blade-los/src/main/java/org/springblade/los/email/controller/EmailAddressController.java

@@ -18,24 +18,32 @@ package org.springblade.los.email.controller;
 
 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.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import org.springblade.common.annotation.RepeatSubmit;
 import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.excel.util.ExcelUtil;
 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.box.dto.ArchivesExcelEnter;
+import org.springblade.los.email.dto.EmailAddressExcel;
 import org.springblade.los.email.entity.EmailAddress;
 import org.springblade.los.email.service.IEmailAddressService;
 import org.springblade.los.email.vo.EmailAddressVO;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -187,4 +195,29 @@ public class EmailAddressController extends BladeController {
 	}
 
 
+	/**
+	 * 导出模板
+	 */
+	@GetMapping("/exportEmailAddressExcel")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "导出模板")
+	public void exportArchivesInfo(HttpServletResponse response) {
+		List<EmailAddressExcel> list = new ArrayList<>();
+		ExcelUtil.export(response, "导入模板-邮箱地址信息", "导出数据表", list, EmailAddressExcel.class);
+	}
+
+	/**
+	 * 导入邮箱地址信息
+	 */
+	@PostMapping("/importEmailAddressExcel")
+	@RepeatSubmit
+	public R importEmailAddressExcel(MultipartFile file) {
+		List<EmailAddressExcel> excelList = ExcelUtil.read(file, EmailAddressExcel.class);
+		if (CollectionUtils.isEmpty(excelList)) {
+			throw new SecurityException("数据不能为空");
+		}
+		return emailAddressService.importEmailAddressExcel(excelList, false);
+	}
+
+
 }

+ 5 - 0
blade-service/blade-los/src/main/java/org/springblade/los/email/service/IEmailAddressService.java

@@ -16,11 +16,15 @@
  */
 package org.springblade.los.email.service;
 
+import org.springblade.core.tool.api.R;
+import org.springblade.los.email.dto.EmailAddressExcel;
 import org.springblade.los.email.entity.EmailAddress;
 import org.springblade.los.email.vo.EmailAddressVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.List;
+
 /**
  * 邮箱地址管理 服务类
  *
@@ -38,4 +42,5 @@ public interface IEmailAddressService extends IService<EmailAddress> {
 	 */
 	IPage<EmailAddressVO> selectEmailAddressPage(IPage<EmailAddressVO> page, EmailAddressVO emailAddress);
 
+    R importEmailAddressExcel(List<EmailAddressExcel> excelList, boolean b);
 }

+ 44 - 3
blade-service/blade-los/src/main/java/org/springblade/los/email/service/impl/EmailAddressServiceImpl.java

@@ -16,13 +16,23 @@
  */
 package org.springblade.los.email.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.los.email.dto.EmailAddressExcel;
 import org.springblade.los.email.entity.EmailAddress;
-import org.springblade.los.email.vo.EmailAddressVO;
 import org.springblade.los.email.mapper.EmailAddressMapper;
 import org.springblade.los.email.service.IEmailAddressService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.los.email.vo.EmailAddressVO;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 邮箱地址管理 服务实现类
@@ -38,4 +48,35 @@ public class EmailAddressServiceImpl extends ServiceImpl<EmailAddressMapper, Ema
 		return page.setRecords(baseMapper.selectEmailAddressPage(page, emailAddress));
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R importEmailAddressExcel(List<EmailAddressExcel> excelList, boolean b) {
+		List<EmailAddress> emailAddressList = new ArrayList<>();
+		List<EmailAddress> addressList = baseMapper.selectList(new LambdaQueryWrapper<EmailAddress>()
+			.eq(EmailAddress::getTenantId, AuthUtil.getTenantId())
+			.eq(EmailAddress::getIsDeleted, 0)
+			.eq(EmailAddress::getCreateUser, AuthUtil.getUserId())
+			.in(EmailAddress::getRecipientUrl, excelList.stream().map(EmailAddressExcel::getRecipientUrl).distinct().collect(Collectors.toList())));
+		for (EmailAddressExcel item : excelList) {
+			EmailAddress emailAddress = new EmailAddress();
+			emailAddress.setCreateTime(new Date());
+			emailAddress.setCreateUser(AuthUtil.getUserId());
+			emailAddress.setCreateUserName(AuthUtil.getUserName());
+			emailAddress.setRecipientUrl(item.getRecipientUrl());
+			emailAddress.setBranchId(AuthUtil.getDeptId());
+			emailAddress.setCreateUserName(AuthUtil.getDeptId());
+			emailAddress.setRecipientName(item.getRecipientName());
+			if (!addressList.isEmpty()) {
+				addressList.stream().filter(e -> !e.getRecipientUrl().equals(item.getRecipientUrl()))
+					.findFirst().ifPresent(emailAddresDetail -> emailAddressList.add(emailAddress));
+			} else {
+				emailAddressList.add(emailAddress);
+			}
+		}
+		if (!emailAddressList.isEmpty()) {
+			this.saveBatch(addressList);
+		}
+		return R.data("");
+	}
+
 }

+ 18 - 10
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FeeCenterUpdateRecordController.java

@@ -16,25 +16,27 @@
  */
 package org.springblade.los.finance.fee.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-import javax.validation.Valid;
-
 import org.springblade.common.annotation.RepeatSubmit;
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.los.box.entity.ExpenseApplication;
-import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.los.finance.fee.entity.FeeCenterUpdateRecord;
-import org.springblade.los.finance.fee.vo.FeeCenterUpdateRecordVO;
 import org.springblade.los.finance.fee.service.IFeeCenterUpdateRecordService;
-import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.los.finance.fee.vo.FeeCenterUpdateRecordVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
 
 /**
  * 费用中心修改记录表 控制器
@@ -68,6 +70,12 @@ public class FeeCenterUpdateRecordController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入feeCenterUpdateRecord")
 	public R<IPage<FeeCenterUpdateRecord>> list(FeeCenterUpdateRecord feeCenterUpdateRecord, Query query) {
+		LambdaQueryWrapper<FeeCenterUpdateRecord> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(FeeCenterUpdateRecord::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenterUpdateRecord::getIsDeleted, 0)
+			.eq(ObjectUtils.isNotNull(feeCenterUpdateRecord.getItemId()),FeeCenterUpdateRecord::getItemId, feeCenterUpdateRecord.getItemId())
+			.eq(ObjectUtils.isNotNull(feeCenterUpdateRecord.getPid()),FeeCenterUpdateRecord::getPid, feeCenterUpdateRecord.getPid())
+			.orderByDesc(FeeCenterUpdateRecord::getCreateTime);
 		IPage<FeeCenterUpdateRecord> pages = feeCenterUpdateRecordService.page(Condition.getPage(query), Condition.getQueryWrapper(feeCenterUpdateRecord));
 		return R.data(pages);
 	}
@@ -139,8 +147,8 @@ public class FeeCenterUpdateRecordController extends BladeController {
 	 */
 	@GetMapping("/revokeapplyUpdate")
 	@RepeatSubmit
-	public R revokeapplyUpdate(@RequestParam("itemId")Long itemId ,@RequestParam("billId")Long billId) {
-		return feeCenterUpdateRecordService.revokeapplyUpdate(itemId,billId);
+	public R revokeapplyUpdate(@RequestParam("itemId") Long itemId, @RequestParam("billId") Long billId) {
+		return feeCenterUpdateRecordService.revokeapplyUpdate(itemId, billId);
 	}
 
 

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

@@ -1383,13 +1383,6 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 		if (fees == null) {
 			throw new RuntimeException("未查到海运费信息,请先维护基础资料");
 		}
-		BFees feesD = bFeesService.getOne(new LambdaQueryWrapper<BFees>()
-			.eq(BFees::getTenantId, AuthUtil.getTenantId())
-			.eq(BFees::getIsDeleted, 0)
-			.eq(BFees::getCode, "XSJ"));
-		if (feesD == null) {
-			throw new RuntimeException("未查到销售价信息,请先维护基础资料");
-		}
 		BFees feesFjf = bFeesService.getOne(new LambdaQueryWrapper<BFees>()
 			.eq(BFees::getTenantId, AuthUtil.getTenantId())
 			.eq(BFees::getIsDeleted, 0)
@@ -1634,7 +1627,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 						list1.add(feeCenter);
 						count++;
 					}
-					FeeCenter feeCenterD = this.addFeeCenter(bills, "D", count, feesD, "国内直接客户", items,
+					FeeCenter feeCenterD = this.addFeeCenter(bills, "D", count, fees, "国内直接客户", items,
 						curExrateList, preContainers, exrateType, "2");
 					if (feeCenterD != null) {
 						feeCenterD.setBranchId(branchId);
@@ -1654,7 +1647,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 						count++;
 					}
 					if ("COC".equals(bills.getBoxBelongsTo())) {
-						FeeCenter feeCenterD = this.addFeeCenter(bills, "D", count, feesD, "国内直接客户", items,
+						FeeCenter feeCenterD = this.addFeeCenter(bills, "D", count, fees, "国内直接客户", items,
 							curExrateList, preContainers, exrateType, "3");
 						if (feeCenterD != null) {
 							feeCenterD.setBranchId(branchId);

+ 5 - 2
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterUpdateRecordServiceImpl.java

@@ -191,7 +191,7 @@ public class FeeCenterUpdateRecordServiceImpl extends ServiceImpl<FeeCenterUpdat
 		}
 		if ("0".equals(feeCenterUpdateRecord.getType())) {
 			feeCenter.setAuditStatus("5");
-		}else{
+		} else {
 			feeCenter.setAuditStatus("6");
 		}
 		int version = StringUtil.isBlank(feeCenter.getVersion()) ? 1 : Integer.parseInt(feeCenter.getVersion());
@@ -313,9 +313,12 @@ public class FeeCenterUpdateRecordServiceImpl extends ServiceImpl<FeeCenterUpdat
 	@Override
 	public R revokeapplyUpdate(Long itemId, Long billId) {
 		FeeCenterUpdateRecord feeCenterUpdateRecord = baseMapper.selectOne(new LambdaQueryWrapper<FeeCenterUpdateRecord>()
+			.eq(FeeCenterUpdateRecord::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenterUpdateRecord::getIsDeleted, 0)
 			.eq(FeeCenterUpdateRecord::getPid, billId)
 			.eq(FeeCenterUpdateRecord::getItemId, itemId)
-			.apply("find_in_set(status,'1,2')  limit 1"));
+			.apply("find_in_set(status,'1,2')")
+			.last("LIMIT 1"));
 		if (feeCenterUpdateRecord == null) {
 			throw new RuntimeException("未查到费用明细申请记录");
 		}

+ 6 - 6
blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/impl/FinInvoicesServiceImpl.java

@@ -147,11 +147,11 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 		}
 		this.saveOrUpdate(finInvoices);
 		if (ObjectUtils.isNotNull(finInvoices.getFinInvoicesItemsList())) {
-			List<String> branchIdList = finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getBranchId)
+			/*List<String> branchIdList = finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getBranchId)
 				.distinct().collect(Collectors.toList());
 			if (branchIdList.size() > 1) {
 				throw new RuntimeException("请选择同一个所属公司明细");
-			}
+			}*/
 			BigDecimal amountCnyD = new BigDecimal("0.00");
 			BigDecimal amountUsdD = new BigDecimal("0.00");
 			BigDecimal amountCnyC = new BigDecimal("0.00");
@@ -295,11 +295,11 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 		FinInvoices detail = baseMapper.selectById(finInvoices.getId());
 		String exrateType = currencyUtils.standardCurrency(detail.getBranchId());
 		if (ObjectUtils.isNotNull(finInvoices.getFinInvoicesItemsList())) {
-			List<String> branchIdList = finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getBranchId)
+			/*List<String> branchIdList = finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getBranchId)
 				.distinct().collect(Collectors.toList());
 			if (branchIdList.size() > 1) {
 				throw new RuntimeException("请选择同一个所属公司明细");
-			}
+			}*/
 			detail.setBusinessNo(finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getBillNo).distinct().collect(Collectors.joining(",")));
 			detail.setMblno(finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getMblno).distinct().collect(Collectors.joining(",")));
 			detail.setHblno(finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getHblno).distinct().collect(Collectors.joining(",")));
@@ -802,11 +802,11 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 		List<FeeCenter> feeCenterList = new ArrayList<>();
 		List<FinAccBills> finAccBillsList = new ArrayList<>();
 		if (ObjectUtils.isNotNull(finInvoices.getFinInvoicesItemsList())) {
-			List<String> branchIdList = finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getBranchId)
+		/*	List<String> branchIdList = finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getBranchId)
 				.distinct().collect(Collectors.toList());
 			if (branchIdList.size() > 1) {
 				throw new RuntimeException("请选择同一个所属公司明细");
-			}
+			}*/
 			detail.setBusinessNo(finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getBillNo).distinct().collect(Collectors.joining(",")));
 			detail.setMblno(finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getMblno).distinct().collect(Collectors.joining(",")));
 			detail.setHblno(finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getHblno).distinct().collect(Collectors.joining(",")));

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

@@ -218,11 +218,11 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		}
 		this.saveOrUpdate(finStlBills);
 		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
-			List<String> branchIdList = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getBranchId)
+		/*	List<String> branchIdList = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getBranchId)
 				.distinct().collect(Collectors.toList());
 			if (branchIdList.size() > 1) {
 				throw new RuntimeException("请选择同一个所属公司明细");
-			}
+			}*/
 			List<FinStlBillsItems> finStlBillsItemsList = new ArrayList<>();
 			BigDecimal amountDrCNY = new BigDecimal("0.00");
 			BigDecimal amountCrCNY = new BigDecimal("0.00");
@@ -285,17 +285,58 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			finStlBills.setAmountCrUsd(amountCrUSD);
 			finStlBills.setAmountDrLoc(amountDrLoc);
 			finStlBills.setAmountCrLoc(amountCrLoc);
-			if ("C".equals(finStlBills.getDc())){
+			if ("C".equals(finStlBills.getDc())) {
 				finStlBills.setAmountSub(finStlBills.getAmountCr().subtract(finStlBills.getAmountDr()));
 				finStlBills.setAmountSubUsd(finStlBills.getAmountCrUsd().subtract(finStlBills.getAmountDrUsd()));
 				finStlBills.setAmountSubLoc(finStlBills.getAmountCrLoc().subtract(finStlBills.getAmountDrLoc()));
-			}else{
+			} else {
 				finStlBills.setAmountSub(finStlBills.getAmountDr().subtract(finStlBills.getAmountCr()));
 				finStlBills.setAmountSubUsd(finStlBills.getAmountDrUsd().subtract(finStlBills.getAmountCrUsd()));
 				finStlBills.setAmountSubLoc(finStlBills.getAmountDrLoc().subtract(finStlBills.getAmountCrLoc()));
 			}
-
-
+			//附件
+			List<Long> ids = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getSrcIdInvoices).filter(Objects::nonNull).collect(Collectors.toList());
+			if (!ids.isEmpty()) {
+				List<Long> filePidList = new ArrayList<>();
+				if ("D".equals(finStlBills.getDc())) {
+					List<FinInvoicesItems> finInvoicesItemsList = finInvoicesItemsMapper.selectList(new LambdaQueryWrapper<FinInvoicesItems>()
+						.eq(FinInvoicesItems::getTenantId, AuthUtil.getTenantId())
+						.eq(FinInvoicesItems::getIsDeleted, 0)
+						.in(FinInvoicesItems::getId, ids));
+					if (!finInvoicesItemsList.isEmpty()) {
+						filePidList = finInvoicesItemsList.stream().map(FinInvoicesItems::getPid).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+					}
+				} else {
+					List<FinStlBillsItems> finStlBillsItems = finStlBillsItemsService.list(new LambdaQueryWrapper<FinStlBillsItems>()
+						.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
+						.eq(FinStlBillsItems::getIsDeleted, 0)
+						.in(FinStlBillsItems::getId, ids));
+					if (!finStlBillsItems.isEmpty()) {
+						filePidList = finStlBillsItems.stream().map(FinStlBillsItems::getPid).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+					}
+				}
+				if (!filePidList.isEmpty()) {
+					List<FilesCenter> filesCenterList = filesCenterService.list(new LambdaQueryWrapper<FilesCenter>()
+						.eq(FilesCenter::getTenantId, AuthUtil.getTenantId())
+						.eq(FilesCenter::getIsDeleted, 0)
+						.in(FilesCenter::getPid, filePidList));
+					if (!filesCenterList.isEmpty()) {
+						List<FilesCenter> filesCenters = new ArrayList<>();
+						for (FilesCenter item : filesCenterList) {
+							item.setId(null);
+							item.setCreateTime(new Date());
+							item.setCreateUserName(AuthUtil.getUserName());
+							item.setCreateUser(AuthUtil.getUserId());
+							item.setPid(finStlBills.getId());
+							item.setUpdateTime(null);
+							item.setUpdateUserName(null);
+							item.setUpdateUser(null);
+							filesCenters.add(item);
+						}
+						filesCenterService.saveBatch(filesCenters);
+					}
+				}
+			}
 		} else {
 			throw new RuntimeException("请选择明细");
 		}
@@ -330,11 +371,11 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		FinStlBills detail = baseMapper.selectById(finStlBills.getId());
 		String exrateType = currencyUtils.standardCurrency(detail.getBranchId());
 		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
-			List<String> branchIdList = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getBranchId)
+		/*	List<String> branchIdList = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getBranchId)
 				.distinct().collect(Collectors.toList());
 			if (branchIdList.size() > 1) {
 				throw new RuntimeException("请选择同一个所属公司明细");
-			}
+			}*/
 			detail.setBusinessNo(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getBillNo).distinct().collect(Collectors.joining(",")));
 			detail.setAccountNo(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillNo).distinct().collect(Collectors.joining(",")));
 			detail.setMblno(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getMblno).distinct().collect(Collectors.joining(",")));
@@ -771,11 +812,11 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		FinStlBills detail = baseMapper.selectById(finStlBills.getId());
 		String exrateType = currencyUtils.standardCurrency(detail.getBranchId());
 		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
-			List<String> branchIdList = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getBranchId)
+			/*List<String> branchIdList = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getBranchId)
 				.distinct().collect(Collectors.toList());
 			if (branchIdList.size() > 1) {
 				throw new RuntimeException("请选择同一个所属公司明细");
-			}
+			}*/
 			detail.setBusinessNo(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getBillNo).distinct().collect(Collectors.joining(",")));
 			detail.setAccountNo(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillNo).distinct().collect(Collectors.joining(",")));
 			detail.setMblno(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getMblno).distinct().collect(Collectors.joining(",")));
@@ -786,6 +827,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			detail.setFeeCode(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getFeeCode).distinct().collect(Collectors.joining(",")));
 			List<Long> ids = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getSrcIdInvoices).filter(Objects::nonNull).collect(Collectors.toList());
 			if (!ids.isEmpty()) {
+				List<FilesCenter> filesCenterList = finStlBills.getFileList();
+				List<FilesCenter> filesCenters = new ArrayList<>();
 				if ("D".equals(finStlBills.getDc())) {
 					List<FinInvoicesItems> finInvoicesItemsList = finInvoicesItemsMapper.selectList(new LambdaQueryWrapper<FinInvoicesItems>()
 						.eq(FinInvoicesItems::getTenantId, AuthUtil.getTenantId())
@@ -811,6 +854,17 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 									item.setBillStatus("1");
 									finInvoicesMapper.updateById(item);
 								}
+									for (FilesCenter filesCenter : filesCenterList) {
+										filesCenter.setId(null);
+										filesCenter.setCreateTime(new Date());
+										filesCenter.setCreateUserName(AuthUtil.getUserName());
+										filesCenter.setCreateUser(AuthUtil.getUserId());
+										filesCenter.setPid(item.getId());
+										filesCenter.setUpdateTime(null);
+										filesCenter.setUpdateUserName(null);
+										filesCenter.setUpdateUser(null);
+										filesCenters.add(filesCenter);
+									}
 							}
 						}
 						for (FinInvoicesItems item : finInvoicesItemsList) {
@@ -844,11 +898,25 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 							if (invoicesItemsSum.size() == finInvoicesItems.size()) {
 								item.setBillStatus("1");
 							}
+							for (FilesCenter filesCenter : filesCenterList) {
+								filesCenter.setId(null);
+								filesCenter.setCreateTime(new Date());
+								filesCenter.setCreateUserName(AuthUtil.getUserName());
+								filesCenter.setCreateUser(AuthUtil.getUserId());
+								filesCenter.setPid(item.getId());
+								filesCenter.setUpdateTime(null);
+								filesCenter.setUpdateUserName(null);
+								filesCenter.setUpdateUser(null);
+								filesCenters.add(filesCenter);
+							}
 						}
 						this.updateBatchById(finStlBills2);
 						finStlBillsItemsService.saveOrUpdateBatch(finStlBillsItemsList);
 					}
 				}
+				if (!filesCenters.isEmpty()){
+					filesCenterService.saveBatch(filesCenters);
+				}
 			}
 			List<FinAccBills> finAccBillsList = new ArrayList<>();
 			List<FeeCenter> feeCenterList = new ArrayList<>();
@@ -1642,11 +1710,11 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		detail.setStatus(1);
 		detail.setAuditDateFrom(new Date());
 		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
-			List<String> branchIdList = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getBranchId)
+			/*List<String> branchIdList = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getBranchId)
 				.distinct().collect(Collectors.toList());
 			if (branchIdList.size() > 1) {
 				throw new RuntimeException("请选择同一个所属公司明细");
-			}
+			}*/
 			detail.setBusinessNo(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getBillNo).distinct().collect(Collectors.joining(",")));
 			detail.setAccountNo(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillNo).distinct().collect(Collectors.joining(",")));
 			detail.setMblno(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getMblno).distinct().collect(Collectors.joining(",")));