纪新园 1 год назад
Родитель
Сommit
410daec89e

+ 12 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/check/entity/LosAuditProecess.java

@@ -302,5 +302,17 @@ public class LosAuditProecess implements Serializable {
 	@ApiModelProperty(value = "所属公司名称")
 	private String salesCompanyName;
 
+	/**
+	 * 利润USD
+	 */
+	@ApiModelProperty(value = "利润USD")
+	private BigDecimal grossProfitUsd;
+
+	/**
+	 * 利润合计
+	 */
+	@ApiModelProperty(value = "利润合计")
+	private BigDecimal grossProfitLoc;
+
 
 }

+ 24 - 15
blade-service/blade-los/src/main/java/org/springblade/los/Util/RegularUtils.java

@@ -197,11 +197,14 @@ public class RegularUtils {
 		if (ObjectUtils.isNull(inttraSoDto.getTransportTermCode())) {
 			msg += "运输条款代码,";
 		} else {
-			Map<String, String> mapString = regularEn(inttraSoDto.getTransportTermCode());
-			if ("200".equals(mapString.get("code"))) {
-				inttraSoDto.setTransportTermCode(mapString.get("susscess"));
-			} else {
-				character += "运输条款代码,";
+			if ("CY to DOOR".equals(inttraSoDto.getTransportTermCode())){
+				inttraSoDto.setTransportTermCode("29");
+			}else if ("DOOR to DOOR".equals(inttraSoDto.getTransportTermCode())){
+				inttraSoDto.setTransportTermCode("27");
+			}else if ("DOOR to CY".equals(inttraSoDto.getTransportTermCode())){
+				inttraSoDto.setTransportTermCode("28");
+			}else if ("CY to CY".equals(inttraSoDto.getTransportTermCode())){
+				inttraSoDto.setTransportTermCode("30");
 			}
 		}
 		//拼箱类型
@@ -1413,11 +1416,14 @@ public class RegularUtils {
 		if (ObjectUtils.isNull(inttraSoDto.getTransportTermCode())) {
 			msg += "运输条款代码,";
 		} else {
-			Map<String, String> mapString = regularEn(inttraSoDto.getTransportTermCode());
-			if ("200".equals(mapString.get("code"))) {
-				inttraSoDto.setTransportTermCode(mapString.get("susscess"));
-			} else {
-				character += "运输条款代码,";
+			if ("CY to DOOR".equals(inttraSoDto.getTransportTermCode())){
+				inttraSoDto.setTransportTermCode("29");
+			}else if ("DOOR to DOOR".equals(inttraSoDto.getTransportTermCode())){
+				inttraSoDto.setTransportTermCode("27");
+			}else if ("DOOR to CY".equals(inttraSoDto.getTransportTermCode())){
+				inttraSoDto.setTransportTermCode("28");
+			}else if ("CY to CY".equals(inttraSoDto.getTransportTermCode())){
+				inttraSoDto.setTransportTermCode("30");
 			}
 		}
 		//拼箱类型
@@ -2526,11 +2532,14 @@ public class RegularUtils {
 		if (ObjectUtils.isNull(inttraSoDto.getTransportTermCode())) {
 			msg += "运输条款代码,";
 		} else {
-			Map<String, String> mapString = regularEn(inttraSoDto.getTransportTermCode());
-			if ("200".equals(mapString.get("code"))) {
-				inttraSoDto.setTransportTermCode(mapString.get("susscess"));
-			} else {
-				character += "运输条款代码,";
+			if ("CY to DOOR".equals(inttraSoDto.getTransportTermCode())){
+				inttraSoDto.setTransportTermCode("29");
+			}else if ("DOOR to DOOR".equals(inttraSoDto.getTransportTermCode())){
+				inttraSoDto.setTransportTermCode("27");
+			}else if ("DOOR to CY".equals(inttraSoDto.getTransportTermCode())){
+				inttraSoDto.setTransportTermCode("28");
+			}else if ("CY to CY".equals(inttraSoDto.getTransportTermCode())){
+				inttraSoDto.setTransportTermCode("30");
 			}
 		}
 		//拼箱类型

+ 4 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/controller/ReportsController.java

@@ -30,6 +30,7 @@ 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.Util.IDeptUtils;
 import org.springblade.los.basic.reports.entity.Reports;
 import org.springblade.los.basic.reports.service.IReportsService;
 import org.springblade.los.basic.reports.vo.ReportsVO;
@@ -51,6 +52,8 @@ public class ReportsController extends BladeController {
 
 	private final IReportsService reportsService;
 
+	private final IDeptUtils deptUtils;
+
 	/**
 	 * 详情
 	 */
@@ -72,6 +75,7 @@ public class ReportsController extends BladeController {
 		LambdaQueryWrapper<Reports> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(Reports::getTenantId, AuthUtil.getTenantId())
 			.eq(Reports::getIsDeleted, 0)
+			.eq(Reports::getBranchId, deptUtils.getDeptPid())
 			.like(ObjectUtils.isNotNull(reports.getCnName()),Reports::getCnName, reports.getCnName())
 			.apply(ObjectUtils.isNotNull(reports.getCode()), "find_in_set(code,'" + reports.getCode() + "')")
 			.apply(ObjectUtils.isNotNull(reports.getGroupCode()), "find_in_set(group_code,'" + reports.getGroupCode() + "')")

+ 26 - 1
blade-service/blade-los/src/main/java/org/springblade/los/business/aea/service/impl/AeaBillsServiceImpl.java

@@ -756,6 +756,11 @@ public class AeaBillsServiceImpl extends ServiceImpl<AeaBillsMapper, AeaBills> i
 				feeCenterList.addAll(feeCenters);
 			}
 		}
+		List<FeeCenter> feeCenterListUsd = feeCenterList.stream().filter(e -> "USD".equals(e.getCurCode())).collect(Collectors.toList());
+		List<FeeCenter> feeCenterListCny = feeCenterList.stream().filter(e -> "CNY".equals(e.getCurCode())).collect(Collectors.toList());
+		if (!feeCenterListUsd.isEmpty() && !feeCenterListCny.isEmpty()) {
+			throw new RuntimeException("应收应付币种不一致");
+		}
 		List<FeeCenter> feeCenterListPS = feeCenterList.stream().filter(e -> e.getFeeCnName().equals("PS")).collect(Collectors.toList());
 		List<FeeCenter> feeCenterListKY = feeCenterList.stream().filter(e -> e.getFeeCnName().equals("空运费")).collect(Collectors.toList());
 		if (!feeCenterListPS.isEmpty()&& !feeCenterListKY.isEmpty()) {
@@ -826,7 +831,27 @@ public class AeaBillsServiceImpl extends ServiceImpl<AeaBillsMapper, AeaBills> i
 			auditProecessDTO.setSalesCompanyName(declare.getCreateDeptName());
 			auditProecessDTO.setPayAmount(declare.getAmountCrLoc());
 			auditProecessDTO.setReceivableAmount(declare.getAmountDrLoc());
-			auditProecessDTO.setGrossProfit(declare.getAmountProfitLoc());
+			BigDecimal amountCnyD = feeCenterList.stream()
+				.filter(e -> "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
+				.map(FeeCenter::getAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal amountCnyC = feeCenterList.stream()
+				.filter(e -> "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
+				.map(FeeCenter::getAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal amountUsdD = feeCenterList.stream()
+				.filter(e -> "USD".equals(e.getCurCode()) && "D".equals(e.getDc()))
+				.map(FeeCenter::getAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal amountUsdC = feeCenterList.stream()
+				.filter(e -> "USD".equals(e.getCurCode()) && "C".equals(e.getDc()))
+				.map(FeeCenter::getAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add);
+
+			auditProecessDTO.setGrossProfit(amountCnyD.subtract(amountCnyC));
+			auditProecessDTO.setGrossProfitUsd(amountUsdD.subtract(amountUsdC));
+			auditProecessDTO.setGrossProfitLoc(auditProecessDTO.getGrossProfit().add(bCurrencyService.converterCny("USD", auditProecessDTO.getGrossProfitUsd(), "")));
+
 			auditProecessDTO.setSalesCompanyName(declare.getCreateDeptName());
 			R financeProcess = auditProecessService.createFinanceProcess(auditProecessDTO);
 			if (!financeProcess.isSuccess()) {

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

@@ -30,6 +30,7 @@ import org.springblade.los.basic.business.entity.BusinessType;
 import org.springblade.los.basic.business.service.IBusinessTypeService;
 import org.springblade.los.basic.corps.entity.BCorps;
 import org.springblade.los.basic.corps.service.IBCorpsService;
+import org.springblade.los.basic.cur.service.IBCurrencyService;
 import org.springblade.los.billno.entity.BusinessBillNo;
 import org.springblade.los.billno.service.IBusinessBillNoService;
 import org.springblade.los.business.aea.entity.AeaBills;
@@ -97,6 +98,8 @@ public class AmendsServiceImpl extends ServiceImpl<AmendsMapper, Amends> impleme
 
 	private final AeaBillsMapper aeaBillsMapper;
 
+	private final IBCurrencyService bCurrencyService;
+
 	@Override
 	public IPage<AmendsVO> selectAmendsPage(IPage<AmendsVO> page, AmendsVO amends) {
 		return page.setRecords(baseMapper.selectAmendsPage(page, amends));
@@ -274,11 +277,36 @@ public class AmendsServiceImpl extends ServiceImpl<AmendsMapper, Amends> impleme
 			if (feeCenterList.isEmpty()) {
 				throw new RuntimeException("费用明细不能为空");
 			}
+			List<FeeCenter> feeCenterListUsd = feeCenterList.stream().filter(e -> "USD".equals(e.getCurCode())).collect(Collectors.toList());
+			List<FeeCenter> feeCenterListCny = feeCenterList.stream().filter(e -> "CNY".equals(e.getCurCode())).collect(Collectors.toList());
+			if (!feeCenterListUsd.isEmpty() && !feeCenterListCny.isEmpty()) {
+				throw new RuntimeException("应收应付币种不一致");
+			}
 			BigDecimal amountC = feeCenterList.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			BigDecimal amountD = feeCenterList.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			auditProecessDTO.setPayAmount(amountC);
 			auditProecessDTO.setReceivableAmount(amountD);
-			auditProecessDTO.setGrossProfit(amountD.subtract(amountC));
+			BigDecimal amountCnyD = feeCenterList.stream()
+				.filter(e -> "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
+				.map(FeeCenter::getAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal amountCnyC = feeCenterList.stream()
+				.filter(e -> "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
+				.map(FeeCenter::getAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal amountUsdD = feeCenterList.stream()
+				.filter(e -> "USD".equals(e.getCurCode()) && "D".equals(e.getDc()))
+				.map(FeeCenter::getAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal amountUsdC = feeCenterList.stream()
+				.filter(e -> "USD".equals(e.getCurCode()) && "C".equals(e.getDc()))
+				.map(FeeCenter::getAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add);
+
+			auditProecessDTO.setGrossProfit(amountCnyD.subtract(amountCnyC));
+			auditProecessDTO.setGrossProfitUsd(amountUsdD.subtract(amountUsdC));
+			auditProecessDTO.setGrossProfitLoc(auditProecessDTO.getGrossProfit().add(bCurrencyService.converterCny("USD", auditProecessDTO.getGrossProfitUsd(), "")));
+
 			auditProecessDTO.setSalesCompanyName(declare.getCreateDeptName());
 			List<FeeCenter> feeCenterBills = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())

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

@@ -344,17 +344,23 @@ public class CustomsDeclarationServiceImpl extends ServiceImpl<CustomsDeclaratio
 			.eq(LosAuditPathsLevels::getTenantId, AuthUtil.getTenantId()).eq(LosAuditPathsLevels::getPathId, pathId));
 		auditProecessDTO.setTimes(1);
 		auditProecessDTO.setProcessType(processType);
-		if (feeCenterService.count(new LambdaQueryWrapper<FeeCenter>()
-			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+		List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 			.eq(FeeCenter::getIsDeleted, 0)
-			.eq(FeeCenter::getPid, declare.getId())) == 0) {
-			throw new RuntimeException("请维护费用信息");
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getPid, declare.getId())
+		);
+		if (feeCenterList.isEmpty()) {
+			throw new RuntimeException("费用明细不能为空");
 		}
 		// 没开启审批流直接走 通过流程
 		if (pathsActs == null || pathsActs.getIsEnable() == 2) {
 			throw new SecurityException("当前租户未查询到审批流配置");
 		} else {
-
+			List<FeeCenter> feeCenterListUsd = feeCenterList.stream().filter(e -> "USD".equals(e.getCurCode())).collect(Collectors.toList());
+			List<FeeCenter> feeCenterListCny = feeCenterList.stream().filter(e -> "CNY".equals(e.getCurCode())).collect(Collectors.toList());
+			if (!feeCenterListUsd.isEmpty() && !feeCenterListCny.isEmpty()) {
+				throw new RuntimeException("应收应付币种不一致");
+			}
 			if (CollectionUtils.isEmpty(auditPathsLevels)) {
 				throw new SecurityException("开启审批失败:未查询到审批信息");
 			}
@@ -380,7 +386,27 @@ public class CustomsDeclarationServiceImpl extends ServiceImpl<CustomsDeclaratio
 			auditProecessDTO.setSalesCompanyName(declare.getCreateDeptName());
 			auditProecessDTO.setPayAmount(declare.getAmountCrLoc());
 			auditProecessDTO.setReceivableAmount(declare.getAmountDrLoc());
-			auditProecessDTO.setGrossProfit(declare.getAmountProfitLoc());
+			BigDecimal amountCnyD = feeCenterList.stream()
+				.filter(e -> "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
+				.map(FeeCenter::getAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal amountCnyC = feeCenterList.stream()
+				.filter(e -> "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
+				.map(FeeCenter::getAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal amountUsdD = feeCenterList.stream()
+				.filter(e -> "USD".equals(e.getCurCode()) && "D".equals(e.getDc()))
+				.map(FeeCenter::getAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal amountUsdC = feeCenterList.stream()
+				.filter(e -> "USD".equals(e.getCurCode()) && "C".equals(e.getDc()))
+				.map(FeeCenter::getAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add);
+
+			auditProecessDTO.setGrossProfit(amountCnyD.subtract(amountCnyC));
+			auditProecessDTO.setGrossProfitUsd(amountUsdD.subtract(amountUsdC));
+			auditProecessDTO.setGrossProfitLoc(auditProecessDTO.getGrossProfit().add(bCurrencyService.converterCny("USD", auditProecessDTO.getGrossProfitUsd(), "")));
+
 			auditProecessDTO.setSalesCompanyName(declare.getCreateDeptName());
 			R financeProcess = auditProecessService.createFinanceProcess(auditProecessDTO);
 			if (!financeProcess.isSuccess()) {

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

@@ -771,7 +771,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 	@Transactional(rollbackFor = Exception.class)
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R add(Bills bills) {
-		if (bills.getId() == null){
+		if (bills.getId() == null) {
 			throw new RuntimeException("缺少必要参数");
 		}
 		bills.setUpdateUser(AuthUtil.getUserId());
@@ -1103,6 +1103,11 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				feeCenterList.addAll(feeCenters);
 			}
 		}
+		List<FeeCenter> feeCenterListUsd = feeCenterList.stream().filter(e -> "USD".equals(e.getCurCode())).collect(Collectors.toList());
+		List<FeeCenter> feeCenterListCny = feeCenterList.stream().filter(e -> "CNY".equals(e.getCurCode())).collect(Collectors.toList());
+		if (!feeCenterListUsd.isEmpty() && !feeCenterListCny.isEmpty()) {
+			throw new RuntimeException("应收应付币种不一致");
+		}
 		List<FeeCenter> feeCenterListPS = feeCenterList.stream().filter(e -> e.getFeeCnName().equals("PS")).collect(Collectors.toList());
 		List<FeeCenter> feeCenterListHY = feeCenterList.stream().filter(e -> e.getFeeCnName().equals("海运费")).collect(Collectors.toList());
 		if (!feeCenterListPS.isEmpty() && !feeCenterListHY.isEmpty()) {
@@ -1177,7 +1182,27 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			}
 			auditProecessDTO.setPayAmount(declare.getAmountCrLoc());
 			auditProecessDTO.setReceivableAmount(declare.getAmountDrLoc());
-			auditProecessDTO.setGrossProfit(declare.getAmountProfitLoc());
+
+			BigDecimal amountCnyD = feeCenterList.stream()
+				.filter(e -> "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
+				.map(FeeCenter::getAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal amountCnyC = feeCenterList.stream()
+				.filter(e -> "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
+				.map(FeeCenter::getAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal amountUsdD = feeCenterList.stream()
+				.filter(e -> "USD".equals(e.getCurCode()) && "D".equals(e.getDc()))
+				.map(FeeCenter::getAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal amountUsdC = feeCenterList.stream()
+				.filter(e -> "USD".equals(e.getCurCode()) && "C".equals(e.getDc()))
+				.map(FeeCenter::getAmount)
+				.reduce(BigDecimal.ZERO, BigDecimal::add);
+
+			auditProecessDTO.setGrossProfit(amountCnyD.subtract(amountCnyC));
+			auditProecessDTO.setGrossProfitUsd(amountUsdD.subtract(amountUsdC));
+			auditProecessDTO.setGrossProfitLoc(auditProecessDTO.getGrossProfit().add(bCurrencyService.converterCny("USD", auditProecessDTO.getGrossProfitUsd(), "")));
 			auditProecessDTO.setSalesCompanyName(declare.getCreateDeptName());
 			R financeProcess = auditProecessService.createFinanceProcess(auditProecessDTO);
 			if (!financeProcess.isSuccess()) {

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

@@ -202,6 +202,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 			auditProecess.setPayAmount(auditProecessDTO.getPayAmount());
 			auditProecess.setReceivableAmount(auditProecessDTO.getReceivableAmount());
 			auditProecess.setGrossProfit(auditProecessDTO.getGrossProfit());
+			auditProecess.setGrossProfitUsd(auditProecessDTO.getGrossProfitUsd());
+			auditProecess.setGrossProfitLoc(auditProecessDTO.getGrossProfitLoc());
 			//除了第一级是待审,其他都N
 			if (e.getLevelId() == 1) {
 				SimpleDateFormat simpleDateFormat = new SimpleDateFormat();

+ 3 - 0
blade-service/blade-los/src/main/java/org/springblade/los/edi/service/impl/EdiTypesServiceImpl.java

@@ -33,6 +33,7 @@ import org.springblade.los.basic.packages.entity.BPackages;
 import org.springblade.los.basic.packages.service.IBPackagesService;
 import org.springblade.los.basic.ports.entity.BPorts;
 import org.springblade.los.basic.ports.service.IBPortsService;
+import org.springblade.los.basic.terms.service.IBServiceTermsService;
 import org.springblade.los.basic.vessels.entity.BVessels;
 import org.springblade.los.basic.vessels.service.IBVesselsService;
 import org.springblade.los.business.files.entity.FilesCenter;
@@ -98,6 +99,8 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 
 	private final IBCntrTypesService bCntrTypesService;
 
+	private final IBServiceTermsService bServiceTermsService;
+
 	@Override
 	public IPage<EdiTypesVO> selectEdiTypesPage(IPage<EdiTypesVO> page, EdiTypesVO ediTypes) {
 		return page.setRecords(baseMapper.selectEdiTypesPage(page, ediTypes));