Ver Fonte

1.账单增加单据类型
2.决策分析分公司增加权限只能看分单,直单
3.海运出口增加提单确认覆盖数据接口
4.往来单位-联系人增加创建用户接口
5.生成账单日期统一字段
6.海运进出口保存,箱型保存重新计算对应箱型费用
7.海运进出口-销售报告报表打印接口修改

纪新园 há 6 meses atrás
pai
commit
48dc6568be
30 ficheiros alterados com 587 adições e 187 exclusões
  1. 10 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/BCorpsAttn.java
  2. 5 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/FinAccBills.java
  3. 5 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/genleg/entity/FinPeriod.java
  4. 4 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/FeeSummaryQ.java
  5. 11 0
      blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java
  6. 10 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/controller/BCorpsAttnController.java
  7. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/service/IBCorpsAttnService.java
  8. 74 3
      blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/service/impl/BCorpsAttnServiceImpl.java
  9. 6 7
      blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/service/impl/BCorpsServiceImpl.java
  10. 108 100
      blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java
  11. 1 0
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/ExpenseApplicationServiceImpl.java
  12. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/amends/service/impl/AmendsServiceImpl.java
  13. 9 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/BillsController.java
  14. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IBillsService.java
  15. 153 8
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java
  16. 68 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/PreContainersServiceImpl.java
  17. 1 0
      blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java
  18. 26 8
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/mapper/FinAccBillsMapper.xml
  19. 4 9
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java
  20. 1 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterUpdateRecordServiceImpl.java
  21. 4 16
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FinAccBillsServiceImpl.java
  22. 14 4
      blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/controller/FinPeriodController.java
  23. 26 22
      blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/impl/FinPeriodServiceImpl.java
  24. 1 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java
  25. 9 0
      blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/impl/StatisticAnalysisServiceImpl.java
  26. 0 6
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java
  27. 1 1
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MenuServiceImpl.java
  28. 6 0
      blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java
  29. 2 0
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java
  30. 23 2
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

+ 10 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/BCorpsAttn.java

@@ -50,6 +50,11 @@ public class BCorpsAttn implements Serializable {
 	@ApiModelProperty(value = "分公司 Id")
 	private String branchId;
 	/**
+	 * 所属公司
+	 */
+	@ApiModelProperty(value = "所属公司")
+	private String branchName;
+	/**
 	 * 创建人 Id
 	 */
 	@ApiModelProperty(value = "创建人 Id")
@@ -166,6 +171,11 @@ public class BCorpsAttn implements Serializable {
 	@ApiModelProperty(value = "租户")
 	private String tenantId;
 	/**
+	 * 登录账号
+	 */
+	@ApiModelProperty(value = "账号")
+	private String accountNumber;
+	/**
 	 * 去重字段
 	 */
 	@TableField(exist = false)

+ 5 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/FinAccBills.java

@@ -155,6 +155,11 @@ public class FinAccBills implements Serializable {
 	@ApiModelProperty(value = "账单关键字 业务表的id+收付结算单位+  +核算要素作为关键字")
 	private String billKey;
 	/**
+	 * 单据类型, DD=直单(默认) MM=主单 MH=主分单 HH=从分单
+	 */
+	@ApiModelProperty(value = "单据类型, DD=直单(默认) MM=主单 MH=主分单 HH=从分单")
+	private String billType;
+	/**
 	 * 业务类型
 	 */
 	@ApiModelProperty(value = "业务类型")

+ 5 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/genleg/entity/FinPeriod.java

@@ -51,6 +51,11 @@ public class FinPeriod implements Serializable {
 	@ApiModelProperty(value = "分公司 Id")
 	private String branchId;
 	/**
+	 * 分公司 Id
+	 */
+	@ApiModelProperty(value = "分公司 Id")
+	private String branchName;
+	/**
 	 * 创建人 Id
 	 */
 	@ApiModelProperty(value = "创建人 Id")

+ 4 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/FeeSummaryQ.java

@@ -82,5 +82,9 @@ public class FeeSummaryQ {
 	 * 航次
 	 */
 	private String voyageNo;
+	/**
+	 * 单据类型
+	 */
+	private String billType;
 
 }

+ 11 - 0
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java

@@ -49,6 +49,8 @@ public interface IUserClient {
 	String USER_INFO_BY_ACCOUNT = API_PREFIX + "/user-info-by-account";
 	String USER_AUTH_INFO = API_PREFIX + "/user-auth-info";
 	String SAVE_USER = API_PREFIX + "/save-user";
+
+	String SAVE_USER_V1 = API_PREFIX + "/save-user/v1";
 	String UPDATE_USER = API_PREFIX + "/update-user";
 	String REMOVE_USER = API_PREFIX + "/remove-user";
 	String GAIN_USER = API_PREFIX + "/gainUser";
@@ -227,6 +229,15 @@ public interface IUserClient {
 	R<Boolean> saveUser(@RequestBody User user);
 
 	/**
+	 * 新建用户
+	 *
+	 * @param user 用户实体
+	 * @return
+	 */
+	@PostMapping(SAVE_USER_V1)
+	R<User> saveUserV1(@RequestBody User user);
+
+	/**
 	 * 修改用户
 	 *
 	 * @param user 用户实体

+ 10 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/controller/BCorpsAttnController.java

@@ -136,4 +136,14 @@ public class BCorpsAttnController extends BladeController {
 	}
 
 
+	/**
+	 * 创建用户
+	 */
+	@PostMapping("/createUser")
+	public R createUser(@Valid @RequestBody BCorpsAttn bCorpsAttn) {
+		return bCorpsAttnService.createUser(bCorpsAttn);
+	}
+
+
+
 }

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/service/IBCorpsAttnService.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.los.basic.corps.service;
 
+import org.springblade.core.tool.api.R;
 import org.springblade.los.basic.corps.entity.BCorpsAttn;
 import org.springblade.los.basic.corps.vo.BCorpsAttnVO;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -38,4 +39,5 @@ public interface IBCorpsAttnService extends IService<BCorpsAttn> {
 	 */
 	IPage<BCorpsAttnVO> selectBCorpsAttnPage(IPage<BCorpsAttnVO> page, BCorpsAttnVO bCorpsAttn);
 
+    R createUser(BCorpsAttn bCorpsAttn);
 }

+ 74 - 3
blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/service/impl/BCorpsAttnServiceImpl.java

@@ -16,13 +16,23 @@
  */
 package org.springblade.los.basic.corps.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.AllArgsConstructor;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
 import org.springblade.los.basic.corps.entity.BCorpsAttn;
-import org.springblade.los.basic.corps.vo.BCorpsAttnVO;
 import org.springblade.los.basic.corps.mapper.CorpsAttnMapper;
 import org.springblade.los.basic.corps.service.IBCorpsAttnService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.los.basic.corps.vo.BCorpsAttnVO;
+import org.springblade.system.feign.ISysClient;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
 
 /**
  * 客户联系人 服务实现类
@@ -31,11 +41,72 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
  * @since 2023-10-07
  */
 @Service
+@AllArgsConstructor
 public class BCorpsAttnServiceImpl extends ServiceImpl<CorpsAttnMapper, BCorpsAttn> implements IBCorpsAttnService {
 
+	private final IUserClient userClient;
+
+	private final ISysClient sysClient;
+
 	@Override
 	public IPage<BCorpsAttnVO> selectBCorpsAttnPage(IPage<BCorpsAttnVO> page, BCorpsAttnVO bCorpsAttn) {
 		return page.setRecords(baseMapper.selectBCorpsAttnPage(page, bCorpsAttn));
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R createUser(BCorpsAttn bCorpsAttn) {
+		if (ObjectUtils.isNull(bCorpsAttn.getAccountNumber())) {
+			throw new RuntimeException("请先维护登录账号");
+		}
+		User user = null;
+		if (ObjectUtils.isNotNull(bCorpsAttn.getUserId())) {
+			R<User> res = userClient.userInfoById(bCorpsAttn.getUserId());
+			if (res.isSuccess()) {
+				user = res.getData();
+			}
+		} else {
+			R<User> res = userClient.userByAccount(AuthUtil.getTenantId(), bCorpsAttn.getAccountNumber());
+			if (res.isSuccess()) {
+				user = res.getData();
+			}
+		}
+		if (user != null) {
+			throw new RuntimeException("用户:" + bCorpsAttn.getAccountNumber() + "已存在,请勿重复创建");
+		}
+		//用户不存在,注册用户
+		User saveUser = new User();
+		saveUser.setTenantId(AuthUtil.getTenantId());
+		saveUser.setAccount(bCorpsAttn.getAccountNumber());
+		saveUser.setName(bCorpsAttn.getCname());
+		saveUser.setRealName(bCorpsAttn.getCname());
+		saveUser.setEmail(bCorpsAttn.getEmail());
+		saveUser.setUserType(0);
+		saveUser.setPhone(bCorpsAttn.getTel());
+		saveUser.setDeptId(bCorpsAttn.getBranchId());
+		//获取注册用户类型
+		R<String> r = sysClient.getRoleIds(AuthUtil.getTenantId(), "客户");
+		if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+			saveUser.setRoleId(r.getData());
+		} else {
+			saveUser.setRoleId("");
+		}
+		saveUser.setPassword("123456");
+		R<User> result = userClient.saveUserV1(saveUser);
+		if (!result.isSuccess()) {
+			throw new RuntimeException("创建用户失败");
+		} else {
+			if (result.getData() != null) {
+				bCorpsAttn.setUserId(result.getData().getId());
+				bCorpsAttn.setUpdateUser(AuthUtil.getUserId());
+				bCorpsAttn.setUpdateTime(new Date());
+				bCorpsAttn.setUpdateUserName(AuthUtil.getUserName());
+			} else {
+				throw new RuntimeException("创建用户失败");
+			}
+		}
+		baseMapper.updateById(bCorpsAttn);
+		return R.data(bCorpsAttn);
+	}
+
 }

+ 6 - 7
blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/service/impl/BCorpsServiceImpl.java

@@ -40,8 +40,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -229,16 +227,17 @@ public class BCorpsServiceImpl extends ServiceImpl<CorpsMapper, BCorps> implemen
 				throw new RuntimeException("客户联系人中:名称+电话+邮箱不允许重复!请修改数据重新保存");
 			}
 			for (BCorpsAttn item : bCorps.getCorpsAttnList()) {
+				if (ObjectUtils.isNull(item.getBranchId())) {
+					item.setBranchId(branchId);
+					item.setBranchName(deptName);
+				}
 				if (item.getId() == null) {
 					item.setPid(bCorps.getId());
 					item.setCreateTime(new Date());
 					item.setCreateUser(AuthUtil.getUserId());
 					item.setCreateUserName(AuthUtil.getUserName());
-					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
-						item.setCreateDept(deptId);
-						item.setBranchId(branchId);
-						item.setCreateDeptName(deptName);
-					}
+					item.setCreateDept(deptId);
+					item.setCreateDeptName(deptName);
 				} else {
 					item.setUpdateUser(AuthUtil.getUserId());
 					item.setUpdateTime(new Date());

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

@@ -874,6 +874,8 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 										feeCenterReports.setPid(item.getId());
 										feeCenterReports.setFeeCnName(fee.getFeeCnName());
 										feeCenterReports.setDc(fee.getDc());
+										feeCenterReports.setCurCode(fee.getCurCode());
+										feeCenterReports.setCurCodeC(fee.getCurCode());
 										List<FeeCenter> feeCenterListD = feeCenterListMh.stream()
 											.filter(e -> MagicValues.D.equals(e.getDc()) && e.getPid().equals(item.getId()) &&
 												e.getFeeId().equals(fee.getFeeId()) && exrateType.equals(e.getCurCode()) && fee.getCurCode().equals(e.getCurCode()) &&
@@ -975,6 +977,8 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 							feeCenterReports.setPid(bills.getId());
 							feeCenterReports.setFeeCnName(fee.getFeeCnName());
 							feeCenterReports.setDc(fee.getDc());
+							feeCenterReports.setCurCode(fee.getCurCode());
+							feeCenterReports.setCurCodeC(fee.getCurCode());
 							Bills finalBills = bills;
 							List<FeeCenter> feeCenterListD = feeCenterList.stream()
 								.filter(e -> MagicValues.D.equals(e.getDc()) && e.getPid().equals(finalBills.getId()) &&
@@ -1031,109 +1035,111 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 					list.add(0, bills);
 				} else if (MagicValues.MH.equals(bills.getBillType())) {
 					// 分单
-					Bills details = billsService.getOne(new LambdaQueryWrapper<Bills>()
-						.eq(Bills::getId, bills.getMasterId())
-						.eq(Bills::getTenantId, AuthUtil.getTenantId())
-						.eq(Bills::getIsDeleted, 0));
-					if (details != null) {
-						LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<FeeCenter>()
-							.in(FeeCenter::getPid, bills.getId())
-							.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-							.eq(FeeCenter::getIsDeleted, 0);
-						if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
-							if (!(AuthUtil.getUserRole().contains("应付查看") && AuthUtil.getUserRole().contains("应收查看"))) {
-								if (AuthUtil.getUserRole().contains("应付查看")) {
-									lambdaQueryWrapper.eq(FeeCenter::getDc, "C");
-								} else if (AuthUtil.getUserRole().contains("应收查看")) {
-									lambdaQueryWrapper.eq(FeeCenter::getDc, "D");
-								}
+					LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<FeeCenter>()
+						.eq(FeeCenter::getPid, bills.getId())
+						.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+						.eq(FeeCenter::getIsDeleted, 0);
+					if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+						if (!(AuthUtil.getUserRole().contains("应付查看") && AuthUtil.getUserRole().contains("应收查看"))) {
+							if (AuthUtil.getUserRole().contains("应付查看")) {
+								lambdaQueryWrapper.eq(FeeCenter::getDc, "C");
+							} else if (AuthUtil.getUserRole().contains("应收查看")) {
+								lambdaQueryWrapper.eq(FeeCenter::getDc, "D");
 							}
 						}
-						List<FeeCenter> feeCenterList = feeCenterService.list(lambdaQueryWrapper);
-						if (!feeCenterList.isEmpty()) {
-							allFeeCenter.addAll(feeCenterList);
-							List<FeeCenter> feeD = feeCenterList.stream().filter(e -> MagicValues.D.equals(e.getDc())).collect(Collectors.toList());
-							bills.setFeeCenterListD(feeD);
-							List<FeeCenter> feeC = feeCenterList.stream().filter(e -> MagicValues.C.equals(e.getDc())).collect(Collectors.toList());
-							bills.setFeeCenterListC(feeC);
+					}
+					List<FeeCenter> feeCenterList = feeCenterService.list(lambdaQueryWrapper);
+					if (!feeCenterList.isEmpty()) {
+						allFeeCenter.addAll(feeCenterList);
+						List<FeeCenter> feeD = feeCenterList.stream().filter(e -> MagicValues.D.equals(e.getDc())).collect(Collectors.toList());
+						bills.setFeeCenterListD(feeD);
+						List<FeeCenter> feeC = feeCenterList.stream().filter(e -> MagicValues.C.equals(e.getDc())).collect(Collectors.toList());
+						bills.setFeeCenterListC(feeC);
+					}
+					if (!feeCenterList.isEmpty()) {
+						for (FeeCenter item : feeCenterList) {
+							if (ObjectUtils.isNotNull(item.getShortName())) {
+								item.setCorpCnName(item.getShortName());
+							} else {
+								item.setCorpCnName("无");
+							}
+							if (ObjectUtils.isNotNull(item.getBillShortName())) {
+								item.setBillCorpCnName(item.getBillShortName());
+							} else {
+								item.setBillCorpCnName("无");
+							}
 						}
-						if (!feeCenterList.isEmpty()) {
-							for (FeeCenter item : feeCenterList) {
-								if (ObjectUtils.isNotNull(item.getShortName())) {
-									item.setCorpCnName(item.getShortName());
-								} else {
-									item.setCorpCnName("无");
-								}
-								if (ObjectUtils.isNotNull(item.getBillShortName())) {
-									item.setBillCorpCnName(item.getBillShortName());
-								} else {
-									item.setBillCorpCnName("无");
-								}
+						List<FeeCenter> feeCenters = feeCenterList.stream()
+							.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
+								Comparator.comparing(f -> f.getFeeId() + f.getCorpId() + f.getCurCode() + f.getDc()))), ArrayList::new));
+						List<FeeCenterReports> feeCenterReportList = new ArrayList<>();
+						for (FeeCenter fee : feeCenters) {
+							FeeCenterReports feeCenterReports = new FeeCenterReports();
+							feeCenterReports.setRemarks(fee.getRemarks());
+							feeCenterReports.setPid(bills.getId());
+							feeCenterReports.setFeeCnName(fee.getFeeCnName());
+							feeCenterReports.setDc(fee.getDc());
+							feeCenterReports.setCurCode(fee.getCurCode());
+							feeCenterReports.setCurCodeC(fee.getCurCode());
+							Bills finalBills1 = bills;
+							List<FeeCenter> feeCenterListD = feeCenterList.stream()
+								.filter(e -> MagicValues.D.equals(e.getDc()) && e.getPid().equals(finalBills1.getId()) &&
+									e.getFeeId().equals(fee.getFeeId()) && exrateType.equals(e.getCurCode()) && fee.getCurCode().equals(e.getCurCode()) &&
+									e.getCorpId().equals(fee.getCorpId()))
+								.collect(Collectors.toList());
+							if (!feeCenterListD.isEmpty()) {
+								feeCenterReports.setBillCorpCnName(fee.getCorpCnName());
+								feeCenterReports.setAmountD(feeCenterListD.stream().map(FeeCenter::getAmount)
+									.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+								feeCenterReports.setAmountLocD(feeCenterListD.stream().map(FeeCenter::getAmountLoc)
+									.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 							}
-							List<FeeCenter> feeCenters = feeCenterList.stream()
-								.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
-									Comparator.comparing(f -> f.getFeeId() + f.getCorpId() + f.getCurCode() + f.getDc()))), ArrayList::new));
-							List<FeeCenterReports> feeCenterReportList = new ArrayList<>();
-							for (FeeCenter fee : feeCenters) {
-								FeeCenterReports feeCenterReports = new FeeCenterReports();
-								feeCenterReports.setRemarks(fee.getRemarks());
-								feeCenterReports.setPid(bills.getId());
-								feeCenterReports.setFeeCnName(fee.getFeeCnName());
-								feeCenterReports.setDc(fee.getDc());
-								Bills finalBills1 = bills;
-								List<FeeCenter> feeCenterListD = feeCenterList.stream()
-									.filter(e -> MagicValues.D.equals(e.getDc()) && e.getPid().equals(finalBills1.getId()) &&
-										e.getFeeId().equals(fee.getFeeId()) && exrateType.equals(e.getCurCode()) && fee.getCurCode().equals(e.getCurCode()) &&
-										e.getCorpId().equals(fee.getCorpId()))
-									.collect(Collectors.toList());
-								if (!feeCenterListD.isEmpty()) {
-									feeCenterReports.setBillCorpCnName(fee.getCorpCnName());
-									feeCenterReports.setAmountD(feeCenterListD.stream().map(FeeCenter::getAmount)
-										.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-									feeCenterReports.setAmountLocD(feeCenterListD.stream().map(FeeCenter::getAmountLoc)
-										.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-								}
-								List<FeeCenter> feeCenterListUsdD = feeCenterList.stream()
-									.filter(e -> MagicValues.D.equals(e.getDc()) && e.getPid().equals(finalBills1.getId()) &&
-										e.getFeeId().equals(fee.getFeeId()) && !exrateType.equals(e.getCurCode()) && fee.getCurCode().equals(e.getCurCode()) &&
-										e.getCorpId().equals(fee.getCorpId()))
-									.collect(Collectors.toList());
-								if (!feeCenterListUsdD.isEmpty()) {
-									feeCenterReports.setBillCorpCnName(fee.getCorpCnName());
-									feeCenterReports.setAmountUsdD(feeCenterListUsdD.stream().map(FeeCenter::getAmount)
-										.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-									feeCenterReports.setAmountLocD(feeCenterListUsdD.stream().map(FeeCenter::getAmountLoc)
-										.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-								}
-								List<FeeCenter> feeCenterListC = feeCenterList.stream()
-									.filter(e -> MagicValues.C.equals(e.getDc()) && e.getPid().equals(finalBills1.getId()) &&
-										e.getFeeId().equals(fee.getFeeId()) && exrateType.equals(e.getCurCode()) && fee.getCurCode().equals(e.getCurCode()) &&
-										e.getCorpId().equals(fee.getCorpId()))
-									.collect(Collectors.toList());
-								if (!feeCenterListC.isEmpty()) {
-									feeCenterReports.setCorpCnName(fee.getCorpCnName());
-									feeCenterReports.setAmountC(feeCenterListC.stream().map(FeeCenter::getAmount)
-										.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-									feeCenterReports.setAmountLocC(feeCenterListC.stream().map(FeeCenter::getAmountLoc)
-										.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-								}
-								List<FeeCenter> feeCenterListUsdC = feeCenterList.stream()
-									.filter(e -> MagicValues.C.equals(e.getDc()) && e.getPid().equals(finalBills1.getId()) &&
-										e.getFeeId().equals(fee.getFeeId()) && !exrateType.equals(e.getCurCode()) && fee.getCurCode().equals(e.getCurCode()) &&
-										e.getCorpId().equals(fee.getCorpId()))
-									.collect(Collectors.toList());
-								if (!feeCenterListUsdC.isEmpty()) {
-									feeCenterReports.setCorpCnName(fee.getCorpCnName());
-									feeCenterReports.setAmountUsdC(feeCenterListUsdC.stream().map(FeeCenter::getAmount)
-										.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-									feeCenterReports.setAmountLocC(feeCenterListUsdC.stream().map(FeeCenter::getAmountLoc)
-										.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-								}
-								feeCenterReportList.add(feeCenterReports);
+							List<FeeCenter> feeCenterListUsdD = feeCenterList.stream()
+								.filter(e -> MagicValues.D.equals(e.getDc()) && e.getPid().equals(finalBills1.getId()) &&
+									e.getFeeId().equals(fee.getFeeId()) && !exrateType.equals(e.getCurCode()) && fee.getCurCode().equals(e.getCurCode()) &&
+									e.getCorpId().equals(fee.getCorpId()))
+								.collect(Collectors.toList());
+							if (!feeCenterListUsdD.isEmpty()) {
+								feeCenterReports.setBillCorpCnName(fee.getCorpCnName());
+								feeCenterReports.setAmountUsdD(feeCenterListUsdD.stream().map(FeeCenter::getAmount)
+									.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+								feeCenterReports.setAmountLocD(feeCenterListUsdD.stream().map(FeeCenter::getAmountLoc)
+									.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 							}
-							bills.setFeeCenterList(feeCenterReportList);
+							List<FeeCenter> feeCenterListC = feeCenterList.stream()
+								.filter(e -> MagicValues.C.equals(e.getDc()) && e.getPid().equals(finalBills1.getId()) &&
+									e.getFeeId().equals(fee.getFeeId()) && exrateType.equals(e.getCurCode()) && fee.getCurCode().equals(e.getCurCode()) &&
+									e.getCorpId().equals(fee.getCorpId()))
+								.collect(Collectors.toList());
+							if (!feeCenterListC.isEmpty()) {
+								feeCenterReports.setCorpCnName(fee.getCorpCnName());
+								feeCenterReports.setAmountC(feeCenterListC.stream().map(FeeCenter::getAmount)
+									.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+								feeCenterReports.setAmountLocC(feeCenterListC.stream().map(FeeCenter::getAmountLoc)
+									.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+							}
+							List<FeeCenter> feeCenterListUsdC = feeCenterList.stream()
+								.filter(e -> MagicValues.C.equals(e.getDc()) && e.getPid().equals(finalBills1.getId()) &&
+									e.getFeeId().equals(fee.getFeeId()) && !exrateType.equals(e.getCurCode()) && fee.getCurCode().equals(e.getCurCode()) &&
+									e.getCorpId().equals(fee.getCorpId()))
+								.collect(Collectors.toList());
+							if (!feeCenterListUsdC.isEmpty()) {
+								feeCenterReports.setCorpCnName(fee.getCorpCnName());
+								feeCenterReports.setAmountUsdC(feeCenterListUsdC.stream().map(FeeCenter::getAmount)
+									.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+								feeCenterReports.setAmountLocC(feeCenterListUsdC.stream().map(FeeCenter::getAmountLoc)
+									.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+							}
+							feeCenterReportList.add(feeCenterReports);
 						}
-						list.add(bills);
+						bills.setFeeCenterList(feeCenterReportList);
+					}
+					list.add(bills);
+					Bills details = billsService.getOne(new LambdaQueryWrapper<Bills>()
+						.eq(Bills::getId, bills.getMasterId())
+						.eq(Bills::getTenantId, AuthUtil.getTenantId())
+						.eq(Bills::getIsDeleted, 0));
+					/*if (details != null) {
 						LambdaQueryWrapper<FeeCenter> feeCenterLambdaQueryWrapper = new LambdaQueryWrapper<FeeCenter>()
 							.in(FeeCenter::getPid, details.getId())
 							.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
@@ -1229,7 +1235,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 							details.setFeeCenterList(feeCenterReportList);
 						}
 						list.add(0, details);
-					}
+					}*/
 				}
 				if (!list.isEmpty()) {
 					for (Bills item : list) {
@@ -1246,7 +1252,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 							// 排序
 							List<FeeCenterReports> feeCentersD = feeCenterReportsD.stream()
 								.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
-									Comparator.comparing(e -> e.getFeeCnName() + e.getBillCorpCnName()))), ArrayList::new));
+									Comparator.comparing(e -> e.getFeeCnName() + e.getBillCorpCnName() + e.getCurCode()))), ArrayList::new));
 							int countC = 0;
 							// 遍历应收,并与应付对应
 							for (int i = 0; i < feeCentersD.size(); i++) {
@@ -1260,7 +1266,9 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 								feeCenterReports1.setAmountLocD(feeCentersD.get(i).getAmountLocD());
 								feeCenterReports1.setAmountUsdD(feeCentersD.get(i).getAmountUsdD());
 								FeeCenterReports feeCenterC = feeCenterReportsC.stream()
-									.filter(e -> e.getFeeCnName().equals(feeCentersD.get(finalI).getFeeCnName()) && !"1".equals(e.getMark())).findFirst().orElse(null);
+									.filter(e -> e.getFeeCnName().equals(feeCentersD.get(finalI).getFeeCnName())
+										&& !"1".equals(e.getMark()) && e.getCurCode().equals(feeCentersD.get(finalI).getCurCode()))
+									.findFirst().orElse(null);
 								if (feeCenterC != null) {
 									feeCenterC.setMark("1");
 									feeCenterReports1.setCorpCnName(feeCenterC.getCorpCnName());

+ 1 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/ExpenseApplicationServiceImpl.java

@@ -575,6 +575,7 @@ public class ExpenseApplicationServiceImpl extends ServiceImpl<ExpenseApplicatio
 		for (FeeCenter item : feeCenterListOld) {
 			item.setStlPid(null);
 			item.setAuditStatus("0");
+			item.setAccStatus(0);
 			item.setApplyId(0L);
 			item.setApplyName("");
 			item.setApplyTime(null);

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

@@ -167,7 +167,7 @@ public class AmendsServiceImpl extends ServiceImpl<AmendsMapper, Amends> impleme
 		if (ObjectUtils.isNotNull(amends.getFeeCenterList())) {
 			for (FeeCenter item : amends.getFeeCenterList()) {
 				item.setBillNo(amends.getBillNo());
-				item.setBillDate(amends.getBillDate());
+				item.setBillDate(amends.getCreateTime());
 				item.setSrcType(amends.getSrcType());
 				item.setSrcId(amends.getSrcId());
 				item.setSrcEnName(amends.getSrcEnName());

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

@@ -912,5 +912,14 @@ public class BillsController extends BladeController {
 							@RequestParam(value = "billType") String billType) {
 		return billsService.updateBillType(ids, billType);
 	}
+
+
+	/**
+	 * 海运分单-提单确认
+	 */
+	@PostMapping("/billLadingConfirm")
+	public R billLadingConfirm(@Valid @RequestBody Bills bills) {
+		return billsService.billLadingConfirm(bills);
+	}
 }
 

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IBillsService.java

@@ -195,4 +195,6 @@ public interface IBillsService extends IService<Bills> {
 	R revokeCustomerBooking(Bills bills);
 
 	Bills revokeLockOrder(Bills bills);
+
+	R billLadingConfirm(Bills bills);
 }

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

@@ -194,6 +194,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			int month = date.getMonthValue();
 			FinPeriod finPeriod = finPeriodMapper.selectOne(new LambdaQueryWrapper<FinPeriod>()
 				.eq(FinPeriod::getTenantId, AuthUtil.getTenantId())
+				.eq(FinPeriod::getBranchId, bills.getBranchId())
 				.eq(FinPeriod::getIsDeleted, 0)
 				.eq(FinPeriod::getPeriodYear, year)
 				.eq(FinPeriod::getPeriodMonth, month));
@@ -408,6 +409,16 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			String exrateType = currencyUtils.standardCurrency(branchId);
 			statusC += 1;
 			for (FeeCenter item : bills.getFeeCenterListC()) {
+				if (ObjectUtils.isNotNull(bills.getPreContainersList())) {
+					PreContainers preContainers = bills.getPreContainersList().stream().filter(e -> e.getCntrTypeCode().equals(item.getUnitNo()))
+						.findFirst().orElse(null);
+					if (preContainers != null && item.getQuantity().compareTo(new BigDecimal(preContainers.getQuantity() + "")) != 0 &&
+						"0,1".contains(item.getAuditStatus())) {
+						item.setQuantity(new BigDecimal(preContainers.getQuantity() + ""));
+						item.setAmount(item.getPrice().multiply(item.getQuantity()));
+						item.setAmountLoc(item.getAmount().multiply(item.getExrate()));
+					}
+				}
 				item.setPid(bills.getId());
 				item.setBillNo(bills.getBillNo());
 				item.setBusinessType(bills.getBusinessType());
@@ -468,6 +479,16 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			String exrateType = currencyUtils.standardCurrency(branchId);
 			statusD += 1;
 			for (FeeCenter item : bills.getFeeCenterListD()) {
+				if (ObjectUtils.isNotNull(bills.getPreContainersList())) {
+					PreContainers preContainers = bills.getPreContainersList().stream().filter(e -> e.getCntrTypeCode().equals(item.getUnitNo()))
+						.findFirst().orElse(null);
+					if (preContainers != null && item.getQuantity().compareTo(new BigDecimal(preContainers.getQuantity() + "")) != 0 &&
+						"0,1".contains(item.getAuditStatus())) {
+						item.setQuantity(new BigDecimal(preContainers.getQuantity() + ""));
+						item.setAmount(item.getPrice().multiply(item.getQuantity()));
+						item.setAmountLoc(item.getAmount().multiply(item.getExrate()));
+					}
+				}
 				item.setPid(bills.getId());
 				item.setBillNo(bills.getBillNo());
 				item.setBusinessType(bills.getBusinessType());
@@ -1167,6 +1188,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			int month = date.getMonthValue();
 			FinPeriod finPeriod = finPeriodMapper.selectOne(new LambdaQueryWrapper<FinPeriod>()
 				.eq(FinPeriod::getTenantId, AuthUtil.getTenantId())
+				.eq(FinPeriod::getBranchId, bills.getBranchId())
 				.eq(FinPeriod::getIsDeleted, 0)
 				.eq(FinPeriod::getPeriodYear, year)
 				.eq(FinPeriod::getPeriodMonth, month));
@@ -1276,6 +1298,9 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				item.setShippingAgencyEname(bills.getShippingAgencyEname());
 				item.setMasterId(bills.getId());
 				item.setMasterBillNo(bills.getBillNo());
+				item.setPlaceDeliveryId(bills.getPlaceDeliveryId());
+				item.setPlaceDeliveryName(bills.getPlaceDeliveryName());
+				item.setPlaceDeliveryCode(bills.getPlaceDeliveryCode());
 				item.setDestinationId(bills.getDestinationId());
 				item.setDestinationName(bills.getDestinationName());
 				item.setDestinationCode(bills.getDestinationCode());
@@ -2701,6 +2726,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			int month = date2.getMonthValue();
 			FinPeriod finPeriod = finPeriodMapper.selectOne(new LambdaQueryWrapper<FinPeriod>()
 				.eq(FinPeriod::getTenantId, AuthUtil.getTenantId())
+				.eq(FinPeriod::getBranchId, bills.getBranchId())
 				.eq(FinPeriod::getIsDeleted, 0)
 				.eq(FinPeriod::getPeriodYear, year)
 				.eq(FinPeriod::getPeriodMonth, month));
@@ -3076,6 +3102,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			int month = date.getMonthValue();
 			FinPeriod finPeriod = finPeriodMapper.selectOne(new LambdaQueryWrapper<FinPeriod>()
 				.eq(FinPeriod::getTenantId, AuthUtil.getTenantId())
+				.eq(FinPeriod::getBranchId, billsJk.getBranchId())
 				.eq(FinPeriod::getIsDeleted, 0)
 				.eq(FinPeriod::getPeriodYear, year)
 				.eq(FinPeriod::getPeriodMonth, month));
@@ -4382,6 +4409,11 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			throw new RuntimeException("缺少必要参数");
 		}
 		Bills detail = baseMapper.selectById(bills.getId());
+		if (ObjectUtils.isNotNull(bills.getConfirmStatus()) && "1".equals(bills.getConfirmStatus())) {
+			if (!detail.getConfirmStatus().equals(bills.getConfirmStatus())) {
+				throw new RuntimeException("提单未确认");
+			}
+		}
 		SeaBillsDetail seaBillsDetail = seaBillsDetailService.getOne(new LambdaQueryWrapper<SeaBillsDetail>()
 			.eq(SeaBillsDetail::getTenantId, AuthUtil.getTenantId())
 			.eq(SeaBillsDetail::getPid, detail.getId()));
@@ -4574,13 +4606,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				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("未查到销售价信息,请先维护基础资料");
-				}
 				String deptName = copyBills.getBranchName();
 				String branchId = copyBills.getBranchId();
 				List<FeeCenter> feeCenters = new ArrayList<>();
@@ -4599,7 +4624,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 						feeCenterListSum.add(feeCenter);
 					}
 					if (!"SOC".equals(copyBills.getBoxBelongsTo())) {
-						FeeCenter feeCenterD = this.addFeeCenterQuotation(copyBills, "C", count, feesD, item,
+						FeeCenter feeCenterD = this.addFeeCenterQuotation(copyBills, "C", count, fees, item,
 							curExrateList, exrateType, "2");
 						if (feeCenterD != null) {
 							feeCenterD.setUnitNo(item.getCntrTypeCode());
@@ -5190,6 +5215,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			int month = date.getMonthValue();
 			FinPeriod finPeriod = finPeriodMapper.selectOne(new LambdaQueryWrapper<FinPeriod>()
 				.eq(FinPeriod::getTenantId, AuthUtil.getTenantId())
+				.eq(FinPeriod::getBranchId, declare.getBranchId())
 				.eq(FinPeriod::getIsDeleted, 0)
 				.eq(FinPeriod::getPeriodYear, year)
 				.eq(FinPeriod::getPeriodMonth, month));
@@ -5223,6 +5249,125 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		return declare;
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R billLadingConfirm(Bills bills) {
+		if (ObjectUtils.isNull(bills.getTemporaryId()) || ObjectUtils.isNull(bills.getId())) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		Bills billsFd = baseMapper.selectById(bills.getId());
+		if (billsFd == null) {
+			throw new RuntimeException("未查到单据信息");
+		}
+		if (ObjectUtils.isNotNull(billsFd.getCyTrailerTime()) && billsFd.getCyTrailerTime().compareTo(new Date()) < 0) {
+			throw new RuntimeException("本单据已截单");
+		}
+		SeaBillsDetail seaBillsDetailFd = seaBillsDetailService.getOne(new LambdaQueryWrapper<SeaBillsDetail>()
+			.eq(SeaBillsDetail::getTenantId, AuthUtil.getTenantId())
+			.eq(SeaBillsDetail::getPid, billsFd.getId()));
+		if (seaBillsDetailFd == null) {
+			throw new RuntimeException("未查到单据信息");
+		}
+		List<Containers> containersFdList = containersService.list(new LambdaQueryWrapper<Containers>()
+			.eq(Containers::getIsDeleted, 0)
+			.eq(Containers::getTenantId, AuthUtil.getTenantId())
+			.eq(Containers::getPid, billsFd.getId()));
+		Bills billsBooking = baseMapper.selectById(bills.getTemporaryId());
+		if (billsBooking == null) {
+			throw new RuntimeException("未查到订舱单据信息");
+		}
+		SeaBillsDetail seaBillsDetailBooking = seaBillsDetailService.getOne(new LambdaQueryWrapper<SeaBillsDetail>()
+			.eq(SeaBillsDetail::getTenantId, AuthUtil.getTenantId())
+			.eq(SeaBillsDetail::getPid, billsBooking.getId()));
+		if (seaBillsDetailBooking == null) {
+			throw new RuntimeException("未查到订舱单据信息");
+		}
+		List<Containers> containersBookingList = containersService.list(new LambdaQueryWrapper<Containers>()
+			.eq(Containers::getIsDeleted, 0)
+			.eq(Containers::getTenantId, AuthUtil.getTenantId())
+			.eq(Containers::getPid, billsBooking.getId()));
+		if (containersBookingList.isEmpty()) {
+			throw new RuntimeException("未查到订舱单据配箱信息");
+		}
+		//覆盖主表信息
+		billsFd.setPolId(billsBooking.getPolId());
+		billsFd.setPolCode(billsBooking.getPolCode());
+		billsFd.setPolCnName(billsBooking.getPolCnName());
+		billsFd.setPolEnName(billsBooking.getPolEnName());
+		billsFd.setPodId(billsBooking.getPodId());
+		billsFd.setPodCode(billsBooking.getPodCode());
+		billsFd.setPodCnName(billsBooking.getPodCnName());
+		billsFd.setPodEnName(billsBooking.getPodEnName());
+		billsFd.setMarks(billsBooking.getMarks());
+		billsFd.setCommodityDescr(billsBooking.getMarks());
+		billsFd.setHpaymode(billsBooking.getMpaymode());
+		billsFd.setMpaymode(billsBooking.getMpaymode());
+		billsFd.setServiceTerms(billsBooking.getServiceTerms());
+		billsFd.setQuantity(billsBooking.getQuantity());
+		billsFd.setGrossWeight(billsBooking.getGrossWeight());
+		billsFd.setMeasurement(billsBooking.getMeasurement());
+		baseMapper.updateById(billsFd);
+		//覆盖主表从表明细信息
+		seaBillsDetailFd.setHnotifyDetails(seaBillsDetailBooking.getHnotifyDetails());
+		seaBillsDetailFd.setHconsigneeDetails(seaBillsDetailBooking.getHconsigneeDetails());
+		seaBillsDetailFd.setHshipperDetails(seaBillsDetailBooking.getHshipperDetails());
+		seaBillsDetailService.updateById(seaBillsDetailFd);
+		//配箱信息处理
+		List<Containers> containersList = new ArrayList<>();
+		if (containersFdList.isEmpty()) {
+			for (Containers item : containersBookingList) {
+				item.setPid(billsFd.getId());
+				item.setId(null);
+				item.setMblno(billsFd.getMblno());
+				item.setHblno(billsFd.getHblno());
+				item.setCreateTime(new Date());
+				item.setCreateUser(AuthUtil.getUserId());
+				item.setCreateUserName(AuthUtil.getUserName());
+				item.setUpdateUser(null);
+				item.setUpdateUserName(null);
+				item.setUpdateTime(null);
+				containersList.add(item);
+			}
+		} else {
+			List<String> cntrNoList = containersFdList.stream().map(Containers::getCntrNo).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+			List<String> cntrNoBookingList = containersBookingList.stream().map(Containers::getCntrNo).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+			if (cntrNoList.size() != cntrNoBookingList.size()) {
+				containersService.removeByIds(containersFdList.stream().map(Containers::getId).collect(Collectors.toList()));
+				for (Containers item : containersBookingList) {
+					item.setPid(billsFd.getId());
+					item.setId(null);
+					item.setMblno(billsFd.getMblno());
+					item.setHblno(billsFd.getHblno());
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setCreateUserName(AuthUtil.getUserName());
+					item.setUpdateUser(null);
+					item.setUpdateUserName(null);
+					item.setUpdateTime(null);
+					containersList.add(item);
+				}
+			} else {
+				for (Containers item : containersFdList) {
+					Containers containers = containersBookingList.stream().filter(e -> e.getCntrNo().equals(item.getCntrNo()))
+						.findFirst().orElse(null);
+					if (containers != null) {
+						item.setSealNo(containers.getSealNo());
+						item.setGrossWeight(containers.getGrossWeight());
+						item.setQuantity(containers.getQuantity());
+						item.setMeasurement(containers.getMeasurement());
+						item.setTare(containers.getTare());
+						item.setVgmWeight(containers.getVgmWeight());
+						containersList.add(item);
+					}
+				}
+			}
+		}
+		if (!containersList.isEmpty()) {
+			containersService.saveOrUpdateBatch(containersList);
+		}
+		return R.data(billsFd);
+	}
+
 	/**
 	 * 删除海运进出口明细表
 	 *

+ 68 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/PreContainersServiceImpl.java

@@ -23,6 +23,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.los.Util.CurrencyUtils;
 import org.springblade.los.Util.RegularUtils;
 import org.springblade.los.basic.cntr.entity.BCntrTypes;
 import org.springblade.los.basic.cntr.service.IBCntrTypesService;
@@ -36,11 +37,15 @@ import org.springblade.los.business.sea.service.IContainersBillsService;
 import org.springblade.los.business.sea.service.IContainersService;
 import org.springblade.los.business.sea.service.IPreContainersService;
 import org.springblade.los.business.sea.vo.PreContainersVO;
+import org.springblade.los.finance.fee.entity.FeeCenter;
+import org.springblade.los.finance.fee.mapper.FeeCenterMapper;
+import org.springblade.los.finance.fee.service.IFeeCenterService;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -66,6 +71,10 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 
 	private final IBCntrTypesService bCntrTypesService;
 
+	private final FeeCenterMapper feeCenterMapper;
+
+	private final CurrencyUtils currencyUtils;
+
 	@Override
 	public IPage<PreContainersVO> selectPreContainersPage(IPage<PreContainersVO> page, PreContainersVO preContainers) {
 		return page.setRecords(baseMapper.selectPreContainersPage(page, preContainers));
@@ -331,7 +340,66 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 			}
 			containersService.updateBatchById(containersList);
 		}
+		if (ObjectUtils.isNotNull(preContainersList)) {
+			String exrateType = currencyUtils.standardCurrency(branchId);
+			List<String> cntrType = preContainersList.stream().map(PreContainers::getCntrTypeCode).distinct().collect(Collectors.toList());
+			List<FeeCenter> feeCenterList = feeCenterMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
+				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+				.eq(FeeCenter::getIsDeleted, 0)
+				.eq(FeeCenter::getPid, preContainersList.get(0).getPid())
+				.in(FeeCenter::getUnitNo, cntrType));
+			for (FeeCenter item : feeCenterList) {
+				PreContainers preContainers = preContainersList.stream().filter(e -> e.getCntrTypeCode().equals(item.getUnitNo()))
+					.findFirst().orElse(null);
+				if (preContainers != null && item.getQuantity().compareTo(new BigDecimal(preContainers.getQuantity() + "")) != 0 &&
+					"0,1".contains(item.getAuditStatus())) {
+					item.setQuantity(new BigDecimal(preContainers.getQuantity() + ""));
+					item.setAmount(item.getPrice().multiply(item.getQuantity()));
+					item.setAmountLoc(item.getAmount().multiply(item.getExrate()));
+					// 去税金额 = 数量quantity * 单价price
+					BigDecimal amountNet = new BigDecimal("0.00");
+					// 税额 = 去税金额amountNet * 税率taxRateSum
+					BigDecimal amountTax = new BigDecimal("0.00");
+					// 金额,amountTax + 去税金额amountNet - 折扣金额amountDiscount
+					BigDecimal amount = new BigDecimal("0.00");
+					//总税率  = 税率taxRate + 附加税率surchargeRate
+					BigDecimal taxRate = new BigDecimal("0.00");
+					// 税率 = 总税率/100
+					BigDecimal taxRateSum = new BigDecimal("0.00");
+
+					//计算字段null值处理
+					item.setSurchargeRate(ObjectUtils.isNotNull(item.getSurchargeRate()) ? item.getSurchargeRate() : new BigDecimal("0.00"));
+					item.setTaxRate(ObjectUtils.isNotNull(item.getTaxRate()) ? item.getTaxRate() : new BigDecimal("0.00"));
+					item.setAmountDiscount(ObjectUtils.isNotNull(item.getAmountDiscount()) ? item.getAmountDiscount() : new BigDecimal("0.00"));
+					item.setStlTtlAmount(ObjectUtils.isNotNull(item.getStlTtlAmount()) ? item.getStlTtlAmount() : new BigDecimal("0.00"));
 
+					amountNet = amountNet.add(item.getQuantity().multiply(item.getPrice()))
+						.setScale(2, RoundingMode.HALF_UP);
+					taxRate = taxRate.add(item.getTaxRate()).add(item.getSurchargeRate());
+					taxRateSum = taxRateSum.add(taxRate.divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
+					amountTax = amountTax.add(amountNet.multiply(taxRateSum)).setScale(2, RoundingMode.HALF_UP);
+					amount = amount.add(amountNet.add(amountTax).subtract(item.getAmountDiscount()));
+
+					//判断是否是本位币
+					if (exrateType.equals(item.getCurCode())) {
+						item.setAmountNetLoc(amountNet);
+						item.setAmountTaxLoc(amountTax);
+						item.setAmountLoc(amount);
+						item.setAmountDiscountLoc(amount);
+					} else {
+						item.setAmountNetLoc(amountNet.multiply(item.getExrate()));
+						item.setAmountTaxLoc(amountTax.multiply(item.getExrate()));
+						item.setAmountLoc(amount.multiply(item.getExrate()));
+						item.setAmountDiscountLoc(item.getAmountLoc());
+					}
+					item.setAmountNet(amountNet);
+					item.setAmountTax(amountTax);
+					item.setAmount(amount);
+					item.setUnsettledAmount(item.getAmount().subtract(item.getStlTtlAmount()));
+					feeCenterMapper.updateById(item);
+				}
+			}
+		}
 		return R.data(preContainersList);
 	}
 

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

@@ -2137,6 +2137,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				data.setBusinessBillId(item.getPid());
 				data.setBusinessBillNo(item.getBillNo());
 				data.setBusinessDate(item.getBillDate());
+				data.setBillType(item.getBillType());
 				data.setSrcId(item.getSrcId());
 				data.setSrcCnName(item.getSrcCnName());
 				data.setSrcEnName(item.getSrcEnName());

+ 26 - 8
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/mapper/FinAccBillsMapper.xml

@@ -211,6 +211,9 @@
         <if test='fee.dc != null and fee.dc != ""'>
             and acc.account_dc = #{fee.dc}
         </if>
+        <if test='fee.billType != null and fee.billType != ""'>
+            and find_in_set(acc.bill_type , #{fee.billType})
+        </if>
         <if test='fee.businessType != null and fee.businessType != ""'>
             and acc.business_type = #{fee.businessType}
         </if>
@@ -228,10 +231,10 @@
         </if>
         <if test='fee.isBusinessDate != null and fee.isBusinessDate != "" and fee.isBusinessDate == "1"'>
             <if test='fee.etdStart != null and fee.etdStart != ""'>
-                and acc.account_date &gt;= #{fee.etdStart}
+                and acc.business_date &gt;= #{fee.etdStart}
             </if>
             <if test='fee.etdEnd != null and fee.etdEnd != ""'>
-                and acc.account_date &lt;= #{fee.etdEnd}
+                and acc.business_date &lt;= #{fee.etdEnd}
             </if>
         </if>
         <if test='fee.isToExamineDate != null and fee.isToExamineDate != "" and fee.isToExamineDate == "1"'>
@@ -292,6 +295,9 @@
         <if test='fee.dc != null and fee.dc != ""'>
             and acc.account_dc = #{fee.dc}
         </if>
+        <if test='fee.billType != null and fee.billType != ""'>
+            and find_in_set(acc.bill_type , #{fee.billType})
+        </if>
         <if test='fee.businessType != null and fee.businessType != ""'>
             and acc.business_type = #{fee.businessType}
         </if>
@@ -309,10 +315,10 @@
         </if>
         <if test='fee.isBusinessDate != null and fee.isBusinessDate != "" and fee.isBusinessDate == "1"'>
             <if test='fee.etdStart != null and fee.etdStart != ""'>
-                and acc.account_date &gt;= #{fee.etdStart}
+                and acc.business_date &gt;= #{fee.etdStart}
             </if>
             <if test='fee.etdEnd != null and fee.etdEnd != ""'>
-                and acc.account_date &lt;= #{fee.etdEnd}
+                and acc.business_date &lt;= #{fee.etdEnd}
             </if>
         </if>
         <if test='fee.isToExamineDate != null and fee.isToExamineDate != "" and fee.isToExamineDate == "1"'>
@@ -388,6 +394,9 @@
         <if test="fee.hblNo != null and fee.hblNo != ''">
             and acc.hblNo like concat('%', #{fee.hblNo}, '%')
         </if>
+        <if test='fee.billType != null and fee.billType != ""'>
+            and find_in_set(acc.bill_type , #{fee.billType})
+        </if>
         <if test='fee.vesselId != null and fee.vesselId != ""'>
             and acc.vessel_id = #{fee.vesselId}
         </if>
@@ -420,10 +429,10 @@
         </if>
         <if test='fee.isBusinessDate != null and fee.isBusinessDate != "" and fee.isBusinessDate == "1"'>
             <if test='fee.etdStart != null and fee.etdStart != ""'>
-                and acc.account_date &gt;= #{fee.etdStart}
+                and acc.business_date &gt;= #{fee.etdStart}
             </if>
             <if test='fee.etdEnd != null and fee.etdEnd != ""'>
-                and acc.account_date &lt;= #{fee.etdEnd}
+                and acc.business_date &lt;= #{fee.etdEnd}
             </if>
         </if>
         <if test='fee.isToExamineDate != null and fee.isToExamineDate != "" and fee.isToExamineDate == "1"'>
@@ -515,6 +524,9 @@
         <if test='fee.dc != null and fee.dc != ""'>
             and acc.account_dc = #{fee.dc}
         </if>
+        <if test='fee.billType != null and fee.billType != ""'>
+            and find_in_set(acc.bill_type , #{fee.billType})
+        </if>
         <if test='fee.businessType != null and fee.businessType != ""'>
             and acc.business_type = #{fee.businessType}
         </if>
@@ -532,10 +544,10 @@
         </if>
         <if test='fee.isBusinessDate != null and fee.isBusinessDate != "" and fee.isBusinessDate == "1"'>
             <if test='fee.etdStart != null and fee.etdStart != ""'>
-                and acc.account_date &gt;= #{fee.etdStart}
+                and acc.business_date &gt;= #{fee.etdStart}
             </if>
             <if test='fee.etdEnd != null and fee.etdEnd != ""'>
-                and acc.account_date &lt;= #{fee.etdEnd}
+                and acc.business_date &lt;= #{fee.etdEnd}
             </if>
         </if>
         <if test='fee.isToExamineDate != null and fee.isToExamineDate != "" and fee.isToExamineDate == "1"'>
@@ -630,6 +642,9 @@
         <if test='fee.dc != null and fee.dc != ""'>
             and acc.account_dc = #{fee.dc}
         </if>
+        <if test='fee.billType != null and fee.billType != ""'>
+            and find_in_set(acc.bill_type , #{fee.billType})
+        </if>
         <if test='fee.businessType != null and fee.businessType != ""'>
             and acc.business_type = #{fee.businessType}
         </if>
@@ -743,6 +758,9 @@
         <if test='fee.dc != null and fee.dc != ""'>
             and acc.account_dc = #{fee.dc}
         </if>
+        <if test='fee.billType != null and fee.billType != ""'>
+            and find_in_set(acc.bill_type , #{fee.billType})
+        </if>
         <if test='fee.businessType != null and fee.businessType != ""'>
             and acc.business_type = #{fee.businessType}
         </if>

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

@@ -629,6 +629,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 					int month = date.getMonthValue();
 					FinPeriod finPeriod = finPeriodMapper.selectOne(new LambdaQueryWrapper<FinPeriod>()
 						.eq(FinPeriod::getTenantId, AuthUtil.getTenantId())
+						.eq(FinPeriod::getBranchId, bills.getBranchId())
 						.eq(FinPeriod::getIsDeleted, 0)
 						.eq(FinPeriod::getPeriodYear, year)
 						.eq(FinPeriod::getPeriodMonth, month));
@@ -943,6 +944,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 				int month = date.getMonthValue();
 				FinPeriod finPeriod = finPeriodMapper.selectOne(new LambdaQueryWrapper<FinPeriod>()
 					.eq(FinPeriod::getTenantId, AuthUtil.getTenantId())
+					.eq(FinPeriod::getBranchId, AuthUtil.getDeptId())
 					.eq(FinPeriod::getIsDeleted, 0)
 					.eq(FinPeriod::getPeriodYear, year)
 					.eq(FinPeriod::getPeriodMonth, month));
@@ -1850,13 +1852,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("未查到销售价信息,请先维护基础资料");
-		}
 		String deptName = "";
 		String branchId = AuthUtil.getDeptId();
 		if (ObjectUtils.isNotNull(branchId)) {
@@ -1930,7 +1925,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 					count++;
 				}
 				if ("SOC".equals(bills.getBoxBelongsTo())) {
-					FeeCenter feeCenterD = this.addFeeCenterQuotation(bills, "C", count, feesD, "国内直接客户", item,
+					FeeCenter feeCenterD = this.addFeeCenterQuotation(bills, "C", count, fees, "国内直接客户", item,
 						curExrateList, mktSlotQuotation, exrateType, "2");
 					if (feeCenterD != null) {
 						feeCenterD.setUnitNo(item.getCntrTypeCode());
@@ -1941,7 +1936,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 						count++;
 					}
 				} else if ("COC".equals(bills.getBoxBelongsTo())) {
-					FeeCenter feeCenterD = this.addFeeCenterQuotation(bills, "C", count, feesD, "船公司", item,
+					FeeCenter feeCenterD = this.addFeeCenterQuotation(bills, "C", count, fees, "船公司", item,
 						curExrateList, mktSlotQuotation, exrateType, "3");
 					if (feeCenterD != null) {
 						feeCenterD.setUnitNo(item.getCntrTypeCode());

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

@@ -116,6 +116,7 @@ public class FeeCenterUpdateRecordServiceImpl extends ServiceImpl<FeeCenterUpdat
 			int month = date.getMonthValue();
 			FinPeriod finPeriod = finPeriodMapper.selectOne(new LambdaQueryWrapper<FinPeriod>()
 				.eq(FinPeriod::getTenantId, AuthUtil.getTenantId())
+				.eq(FinPeriod::getBranchId, feeCenter.getBillDate())
 				.eq(FinPeriod::getIsDeleted, 0)
 				.eq(FinPeriod::getPeriodYear, year)
 				.eq(FinPeriod::getPeriodMonth, month));

+ 4 - 16
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FinAccBillsServiceImpl.java

@@ -203,22 +203,10 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 			data.setBillKey(item.getBillKey());
 			data.setBusinessType(item.getBusinessType());
 			Bills bills = billsList.stream().filter(e -> e.getId().equals(item.getPid())).findFirst().orElse(new Bills());
-			if ("MH".equals(item.getBusinessType())) {
-				//分单
-				data.setBusinessBillDivideId(item.getPid());
-				data.setBusinessBillDivideNo(item.getBillNo());
-				data.setBusinessDivideDate(item.getEtd());
-				//主单
-				if (ObjectUtils.isNotNull(bills.getMasterId())) {
-					data.setBusinessBillId(bills.getMasterId());
-					data.setBusinessBillNo(bills.getMasterBillNo());
-					data.setBusinessDate(item.getBillDate());
-				}
-			} else {
-				data.setBusinessBillId(item.getPid());
-				data.setBusinessBillNo(item.getBillNo());
-				data.setBusinessDate(item.getBillDate());
-			}
+			data.setBillType(item.getBillType());
+			data.setBusinessBillId(item.getPid());
+			data.setBusinessBillNo(item.getBillNo());
+			data.setBusinessDate(item.getBillDate());
 			data.setSrcId(bills.getSrcId());
 			data.setSrcCnName(bills.getSrcCnName());
 			data.setSrcEnName(bills.getSrcEnName());

+ 14 - 4
blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/controller/FinPeriodController.java

@@ -39,13 +39,11 @@ import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.business.sea.service.IBillsService;
 import org.springblade.los.excel.ReviewFailedExcel;
 import org.springblade.los.excel.UnbookkeptExcel;
-import org.springblade.los.finance.genleg.dto.PeriodVouchersTemplate;
 import org.springblade.los.finance.genleg.entity.FinPeriod;
 import org.springblade.los.finance.genleg.service.IFinPeriodService;
 import org.springblade.los.finance.genleg.vo.FinPeriodVO;
 import org.springblade.los.finance.stl.entity.FinStlBills;
 import org.springblade.los.finance.stl.service.IFinStlBillsService;
-import org.springblade.system.feign.ISysClient;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -93,7 +91,19 @@ public class FinPeriodController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入finPeriod")
 	public R<IPage<FinPeriod>> list(FinPeriod finPeriod, Query query) {
-		IPage<FinPeriod> pages = finPeriodService.page(Condition.getPage(query), Condition.getQueryWrapper(finPeriod));
+		LambdaQueryWrapper<FinPeriod> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(finPeriod.getPeriodYear()), FinPeriod::getPeriodYear, finPeriod.getPeriodYear())
+			.eq(ObjectUtils.isNotNull(finPeriod.getPeriodMonth()), FinPeriod::getPeriodMonth, finPeriod.getPeriodMonth())
+			.eq(ObjectUtils.isNotNull(finPeriod.getIsClosed()), FinPeriod::getIsClosed, finPeriod.getIsClosed())
+			.eq(ObjectUtils.isNotNull(finPeriod.getLockingStatus()), FinPeriod::getLockingStatus, finPeriod.getLockingStatus())
+			.eq(ObjectUtils.isNotNull(finPeriod.getBeginDate()), FinPeriod::getBeginDate, finPeriod.getBeginDate())
+			.eq(ObjectUtils.isNotNull(finPeriod.getEndDate()), FinPeriod::getEndDate, finPeriod.getEndDate());
+		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+			lambdaQueryWrapper.eq(FinPeriod::getBranchId, AuthUtil.getDeptId());
+		} else {
+			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(finPeriod.getBranchId()), FinPeriod::getBranchId, finPeriod.getBranchId());
+		}
+		IPage<FinPeriod> pages = finPeriodService.page(Condition.getPage(query), lambdaQueryWrapper);
 		for (FinPeriod item : pages.getRecords()) {
 			item.setPeriodDate(item.getPeriodYear() + "年" + item.getPeriodMonth() + "月");
 		}
@@ -284,7 +294,7 @@ public class FinPeriodController extends BladeController {
 		}
 		for (Amends item : amendsList) {
 			ReviewFailedExcel reviewFailedExcel = new ReviewFailedExcel();
-			 if ("SIA".equals(item.getBusinessType())) {
+			if ("SIA".equals(item.getBusinessType())) {
 				if (!billsList1.isEmpty()) {
 					Bills aeaBills = billsList1.stream().filter(e -> e.getId().equals(item.getOrigId())).findFirst().orElse(null);
 					if (aeaBills != null && "SALES".equals(aeaBills.getSrcType())) {

+ 26 - 22
blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/impl/FinPeriodServiceImpl.java

@@ -27,15 +27,12 @@ import org.springblade.core.excel.util.ExcelUtil;
 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.IDeptUtils;
 import org.springblade.los.business.amends.entity.Amends;
 import org.springblade.los.business.amends.service.IAmendsService;
 import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.business.sea.service.IBillsService;
 import org.springblade.los.excel.ReviewFailedExcel;
 import org.springblade.los.excel.UnbookkeptExcel;
-import org.springblade.los.finance.genleg.dto.PeriodExchangeRate;
-import org.springblade.los.finance.genleg.dto.PeriodVouchersAccItems;
 import org.springblade.los.finance.genleg.dto.PeriodVouchersTemplate;
 import org.springblade.los.finance.genleg.entity.FinGenleg;
 import org.springblade.los.finance.genleg.entity.FinGenlegCalc;
@@ -45,7 +42,6 @@ import org.springblade.los.finance.genleg.service.IFinGenlegCalcService;
 import org.springblade.los.finance.genleg.service.IFinGenlegService;
 import org.springblade.los.finance.genleg.service.IFinPeriodService;
 import org.springblade.los.finance.genleg.vo.FinPeriodVO;
-import org.springblade.los.finance.stl.entity.FinStlBills;
 import org.springblade.los.finance.stl.service.IFinStlBillsService;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
@@ -53,7 +49,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
-import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.ZoneId;
@@ -245,7 +240,7 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 			.eq(Amends::getIsDeleted, 0)
 			.eq(Amends::getBranchId, detail.getBranchId())
 			.apply("not find_in_set(bill_status,'3')")
-			.apply("((create_time >='" + beginDate + "' and create_time <= '" + endDate + "' )"));
+			.apply("create_time >='" + beginDate + "' and create_time <= '" + endDate + "'"));
 		List<Bills> billsList1 = new ArrayList<>();
 		if (!amendsList.isEmpty()) {
 			List<Long> billsId = amendsList.stream().map(Amends::getOrigId).collect(Collectors.toList());
@@ -375,6 +370,8 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 		}
 		finPeriodNew.setExchange(detail.getExchange());
 		finPeriodNew.setPeriod(detail.getPeriod());
+		finPeriodNew.setBranchId(detail.getBranchId());
+		finPeriodNew.setBranchName(detail.getBranchName());
 		this.submit(finPeriodNew);
 		if (ObjectUtils.isNull(status) || !"0".equals(status)) {
 			List<FinGenlegCalc> finGenlegCalcList = finGenlegCalcService.list(new LambdaQueryWrapper<FinGenlegCalc>()
@@ -534,10 +531,10 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 		String deptName = "";
 		String branchId = AuthUtil.getDeptId();
 		//获取部门ids对应中文名
-			R<List<String>> res = sysClient.getDeptNames(branchId);
-			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
-				deptName = String.join(",", res.getData());
-			}
+		R<List<String>> res = sysClient.getDeptNames(branchId);
+		if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+			deptName = String.join(",", res.getData());
+		}
 		String status = sysClient.getParamService("whether.open");
 		if (finPeriod.getId() == null) {
 			if (ObjectUtils.isNotNull(finPeriod.getBeginDate())) {
@@ -561,11 +558,10 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 			finPeriod.setCreateTime(new Date());
 			finPeriod.setCreateUser(AuthUtil.getUserId());
 			finPeriod.setCreateUserName(AuthUtil.getUserName());
-			if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
-				finPeriod.setCreateDept(deptId);
-				finPeriod.setBranchId(branchId);
-				finPeriod.setCreateDeptName(deptName);
-			}
+			finPeriod.setCreateDept(deptId);
+			finPeriod.setBranchId(branchId);
+			finPeriod.setBranchName(deptName);
+			finPeriod.setCreateDeptName(deptName);
 		} else {
 			finPeriod.setUpdateUser(AuthUtil.getUserId());
 			finPeriod.setUpdateTime(new Date());
@@ -622,9 +618,17 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public R open(FinPeriod finPeriod) {
-		String deptId = AuthUtil.getDeptId();
+
+		String deptId;
 		String deptName = "";
-		String branchId = AuthUtil.getDeptId();
+		String branchId;
+		if (ObjectUtils.isNotNull(finPeriod.getBranchId())) {
+			deptId = finPeriod.getBranchId();
+			branchId = finPeriod.getBranchId();
+		} else {
+			deptId = AuthUtil.getDeptId();
+			branchId = AuthUtil.getDeptId();
+		}
 		//获取部门ids对应中文名
 		if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
 			deptId = AuthUtil.getDeptId();
@@ -636,6 +640,7 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 		if (baseMapper.selectCount(new LambdaQueryWrapper<FinPeriod>()
 			.eq(FinPeriod::getTenantId, AuthUtil.getTenantId())
 			.eq(FinPeriod::getIsDeleted, 0)
+			.eq(FinPeriod::getBranchId, AuthUtil.getDeptId())
 			.eq(FinPeriod::getBranchId, branchId)) > 0) {
 			throw new RuntimeException("已有账期,请勿重复开账");
 		}
@@ -670,11 +675,10 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 		finPeriod.setCreateTime(new Date());
 		finPeriod.setCreateUser(AuthUtil.getUserId());
 		finPeriod.setCreateUserName(AuthUtil.getUserName());
-		if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
-			finPeriod.setCreateDept(deptId);
-			finPeriod.setBranchId(branchId);
-			finPeriod.setCreateDeptName(deptName);
-		}
+		finPeriod.setCreateDept(deptId);
+		finPeriod.setBranchId(branchId);
+		finPeriod.setBranchName(deptName);
+		finPeriod.setCreateDeptName(deptName);
 		this.saveOrUpdate(finPeriod);
 
 		/*PeriodVouchersTemplate exchange = new PeriodVouchersTemplate();

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

@@ -170,6 +170,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			int month = date.getMonthValue();
 			FinPeriod finPeriod = finPeriodMapper.selectOne(new LambdaQueryWrapper<FinPeriod>()
 				.eq(FinPeriod::getTenantId, AuthUtil.getTenantId())
+				.eq(FinPeriod::getBranchId, finStlBills.getBillDate())
 				.eq(FinPeriod::getIsDeleted, 0)
 				.eq(FinPeriod::getPeriodYear, year)
 				.eq(FinPeriod::getPeriodMonth, month));

+ 9 - 0
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/impl/StatisticAnalysisServiceImpl.java

@@ -85,6 +85,7 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 		financeProfit.setTenantId(AuthUtil.getTenantId());
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
 			financeProfit.setBranchId(AuthUtil.getDeptId());
+			financeProfit.setBillType("MH,DD");
 		}
 		List<FinanceProfitDtoList> financeProfitList;
 		//是否合并amend费用  true 合并  false 不合并
@@ -529,6 +530,7 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 		feeSummaryQ.setTenantId(AuthUtil.getTenantId());
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
 			feeSummaryQ.setBranchId(AuthUtil.getDeptId());
+			feeSummaryQ.setBillType("MH,DD");
 		}
 		return R.data(page.setRecords(finAccBillsMapper.feeSummaryList(page, feeSummaryQ)));
 	}
@@ -538,6 +540,7 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 		feeSummaryQ.setTenantId(AuthUtil.getTenantId());
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
 			feeSummaryQ.setBranchId(AuthUtil.getDeptId());
+			feeSummaryQ.setBillType("MH,DD");
 		}
 		return finAccBillsMapper.feeSummaryExportList(feeSummaryQ);
 	}
@@ -547,6 +550,7 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 		feeSummaryQ.setTenantId(AuthUtil.getTenantId());
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
 			feeSummaryQ.setBranchId(AuthUtil.getDeptId());
+			feeSummaryQ.setBillType("MH,DD");
 		}
 		return R.data(page.setRecords(finAccBillsMapper.feeSummaryDetailList(page, feeSummaryQ)));
 	}
@@ -556,6 +560,7 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 		feeSummaryQ.setTenantId(AuthUtil.getTenantId());
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
 			feeSummaryQ.setBranchId(AuthUtil.getDeptId());
+			feeSummaryQ.setBillType("MH,DD");
 		}
 		return finAccBillsMapper.feeSummaryDetailExportList(feeSummaryQ);
 	}
@@ -565,6 +570,7 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 		feeSummaryQ.setTenantId(AuthUtil.getTenantId());
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
 			feeSummaryQ.setBranchId(AuthUtil.getDeptId());
+			feeSummaryQ.setBillType("MH,DD");
 		}
 		return R.data(page.setRecords(finAccBillsMapper.feeSummaryDetailNotList(page, feeSummaryQ)));
 	}
@@ -574,6 +580,7 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 		feeSummaryQ.setTenantId(AuthUtil.getTenantId());
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
 			feeSummaryQ.setBranchId(AuthUtil.getDeptId());
+			feeSummaryQ.setBillType("MH,DD");
 		}
 		return finAccBillsMapper.feeSummaryDetailExportNotList(feeSummaryQ);
 	}
@@ -601,6 +608,7 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 		financeProfit.setTenantId(AuthUtil.getTenantId());
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
 			financeProfit.setBranchId(AuthUtil.getDeptId());
+			financeProfit.setBillType("MH,DD");
 		}
 		if (ObjectUtils.isNotNull(financeProfit.getExamineDate()) && "0".equals(financeProfit.getExamineDate())) {
 			financeProfit.setExamineDate(null);
@@ -758,6 +766,7 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 		financeProfit.setTenantId(AuthUtil.getTenantId());
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
 			financeProfit.setBranchId(AuthUtil.getDeptId());
+			financeProfit.setBillType("MH,DD");
 		}
 		if (ObjectUtils.isNotNull(financeProfit.getExamineDate()) && "0".equals(financeProfit.getExamineDate())) {
 			financeProfit.setExamineDate(null);

+ 0 - 6
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java

@@ -81,12 +81,6 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 
 	private final IBrandDescService brandDescService;
 
-	private final OrderMapper orderMapper;
-
-	private final ShipMapper shipMapper;
-
-	private final SettlementMapper settlementMapper;
-
 
 	static final int GB_SP_DIFF = 160;
 	// 存放国标一级汉字不同读音的起始区位码

+ 1 - 1
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MenuServiceImpl.java

@@ -120,7 +120,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
 		routes.sort(Comparator.comparing(Menu::getSort));
 		MenuWrapper menuWrapper = new MenuWrapper();
 		for (Menu item : routes){
-			if ("1".equals(type)){
+			if ("en".equals(type)){
 				item.setName(item.getAlias());
 			}
 		}

+ 6 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java

@@ -209,6 +209,12 @@ public class UserClient implements IUserClient {
 	}
 
 	@Override
+	@PostMapping(SAVE_USER_V1)
+	public R<User> saveUserV1(User user) {
+		return R.data(service.saveUser(user));
+	}
+
+	@Override
 	@PostMapping(UPDATE_USER)
 	public R<Boolean> updateUser(@RequestBody User user) {
 		return R.data(service.updateUser(user));

+ 2 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java

@@ -254,4 +254,6 @@ public interface IUserService extends BaseService<User> {
 	 * @return 结果
 	 */
 	R<List<User>> selectUserByRolesAndAccount(String roleIds, String account);
+
+	User saveUser(User user);
 }

+ 23 - 2
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -23,7 +23,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
-import org.springblade.common.constant.TenantConstant;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Condition;
@@ -32,7 +31,6 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.BladeTenantProperties;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.jackson.JsonUtil;
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.*;
 import org.springblade.system.cache.DictCache;
@@ -553,4 +551,27 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
 		return R.data(this.list(queryWrapper));
 	}
 
+	@Override
+	public User saveUser(User user) {
+		if (StringUtil.isNotBlank(user.getDeptId())) {
+			user.setDeptPid(selectTopId(user.getDeptId()));
+		}
+		if (StringUtil.isBlank(user.getTenantId())) {
+			user.setTenantId(AuthUtil.getTenantId());
+		}
+		String tenantId = user.getTenantId();
+		if (Func.isNotEmpty(user.getPassword())) {
+			user.setPassword(DigestUtil.encrypt(user.getPassword()));
+		}
+		Integer userCount = baseMapper.selectCount(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId)
+			.eq(User::getAccount, user.getAccount())
+			.eq(User::getAppletsId, user.getAppletsId())
+		);
+		if (userCount > 0 && Func.isEmpty(user.getId())) {
+			throw new RuntimeException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount()));
+		}
+		baseMapper.insert(user);
+		return user;
+	}
+
 }