浏览代码

1.业务加锁-海运,空运进出口以及海运,空运进出口报关逻辑修改
2.业务-快递业务模块接口调试及修改
3.amend列表接口权限修改

纪新园 5 月之前
父节点
当前提交
444cd0b399

+ 12 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/aea/entity/AeaBills.java

@@ -1253,6 +1253,18 @@ public class AeaBills implements Serializable {
 	@ApiModelProperty(value = "出库日期")
 	private Date outboundDate;
 
+	/**
+	 * 单据锁
+	 */
+	@ApiModelProperty(value = "单据锁")
+	private Integer locked;
+
+	/**
+	 * 解锁日期
+	 */
+	@ApiModelProperty(value = "解锁日期")
+	private Date lockedDate;
+
 	@TableField(exist = false)
 	private String FM;
 

+ 12 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/customsDeclaration/entity/CustomsDeclaration.java

@@ -635,6 +635,18 @@ public class CustomsDeclaration implements Serializable {
 	@ApiModelProperty(value = "租户")
 	private String tenantId;
 
+	/**
+	 * 单据锁
+	 */
+	@ApiModelProperty(value = "单据锁")
+	private Integer locked;
+
+	/**
+	 * 解锁日期
+	 */
+	@ApiModelProperty(value = "解锁日期")
+	private Date lockedDate;
+
 
 	/**
 	 * 物流-费用中心(付)

+ 12 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/generalBill/entity/GeneralBill.java

@@ -445,5 +445,17 @@ public class GeneralBill implements Serializable {
 	@TableField(exist = false)
 	private List<LosAuditPathsLevels> auditPathsLevels;
 
+	/**
+	 * 开船日期
+	 */
+	@TableField(exist = false)
+	private List<String> etdList;
+
+	/**
+	 * 到港日期
+	 */
+	@TableField(exist = false)
+	private List<String> etaList;
+
 
 }

+ 7 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/locks/entity/BillLocks.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.los.business.locks.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -214,5 +215,11 @@ public class BillLocks implements Serializable {
 	@ApiModelProperty(value = "租户")
 	private String tenantId;
 
+	/**
+	 * 加锁类型
+	 */
+	@TableField(exist = false)
+	private String type;
+
 
 }

+ 8 - 4
blade-service/blade-los/src/main/java/org/springblade/los/business/amends/controller/AmendsController.java

@@ -104,13 +104,17 @@ public class AmendsController extends BladeController {
 				&& !AuthUtil.getUserRole().contains("副总") && !AuthUtil.getUserRole().contains("财务")
 				&& !AuthUtil.getUserRole().contains("经理")) {
 				if (AuthUtil.getUserRole().contains("操作经理")) {
-					lambdaQueryWrapper.eq(Amends::getOperatorDept, AuthUtil.getDeptId());
+					lambdaQueryWrapper.and(i -> i.eq(Amends::getOperatorDept, AuthUtil.getDeptId()).or()
+						.eq(Amends::getCreateUser, AuthUtil.getUserId()));
 				} else if (AuthUtil.getUserRole().contains("操作员")) {
-					lambdaQueryWrapper.and(i -> i.eq(Amends::getOperatorId, AuthUtil.getUserId()).or().eq(Amends::getCreateUser,AuthUtil.getUserId()));
+					lambdaQueryWrapper.and(i -> i.eq(Amends::getOperatorId, AuthUtil.getUserId()).or()
+						.eq(Amends::getCreateUser, AuthUtil.getUserId()));
 				} else if (AuthUtil.getUserRole().contains("销售经理")) {
-					lambdaQueryWrapper.eq(Amends::getSrcDeptId, AuthUtil.getDeptId());
+					lambdaQueryWrapper.and(i -> i.eq(Amends::getSrcDeptId, AuthUtil.getDeptId()).or()
+						.eq(Amends::getCreateUser, AuthUtil.getUserId()));
 				} else if (AuthUtil.getUserRole().contains("业务员")) {
-					lambdaQueryWrapper.eq(Amends::getSrcId, AuthUtil.getUserId());
+					lambdaQueryWrapper.and(i -> i.eq(Amends::getSrcId, AuthUtil.getUserId()).or()
+						.eq(Amends::getCreateUser, AuthUtil.getUserId()));
 				} else {
 					lambdaQueryWrapper.eq(Amends::getCreateUser, AuthUtil.getUserId());
 				}

+ 38 - 10
blade-service/blade-los/src/main/java/org/springblade/los/business/generalBill/controller/GeneralBillController.java

@@ -16,25 +16,27 @@
  */
 package org.springblade.los.business.generalBill.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-import javax.validation.Valid;
-
 import org.springblade.common.annotation.RepeatSubmit;
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.los.business.sea.entity.Bills;
-import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.los.business.generalBill.entity.GeneralBill;
-import org.springblade.los.business.generalBill.vo.GeneralBillVO;
 import org.springblade.los.business.generalBill.service.IGeneralBillService;
-import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.los.business.generalBill.vo.GeneralBillVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
 
 /**
  * 业务-海、空运舱单,快递业务,海运派车 控制器
@@ -68,8 +70,34 @@ public class GeneralBillController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入generalBill")
 	public R<IPage<GeneralBill>> list(GeneralBill generalBill, Query query) {
-
-		IPage<GeneralBill> pages = generalBillService.page(Condition.getPage(query), Condition.getQueryWrapper(generalBill));
+		LambdaQueryWrapper<GeneralBill> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(GeneralBill::getTenantId, AuthUtil.getTenantId())
+			.eq(GeneralBill::getIsDeleted, 0)
+			.eq(GeneralBill::getBillType, generalBill.getBillType())
+			.eq(ObjectUtils.isNotNull(generalBill.getBusinessType()), GeneralBill::getBusinessType, generalBill.getBusinessType())
+			.like(ObjectUtils.isNotNull(generalBill.getBillNo()), GeneralBill::getBillNo, generalBill.getBillNo())
+			.like(ObjectUtils.isNotNull(generalBill.getMblno()), GeneralBill::getMblno, generalBill.getMblno())
+			.like(ObjectUtils.isNotNull(generalBill.getHblno()), GeneralBill::getHblno, generalBill.getHblno())
+			.like(ObjectUtils.isNotNull(generalBill.getRefno()), GeneralBill::getRefno, generalBill.getRefno())
+			.like(ObjectUtils.isNotNull(generalBill.getCreateUserName()), GeneralBill::getCreateUserName, generalBill.getCreateUserName())
+			.like(ObjectUtils.isNotNull(generalBill.getCommodityName()), GeneralBill::getCommodityName, generalBill.getCommodityName())
+			.and(ObjectUtils.isNotNull(generalBill.getVesselCnName()), i -> i.like(GeneralBill::getVesselCnName, generalBill.getVesselCnName()).or()
+				.like(GeneralBill::getVesselEnName, generalBill.getVesselCnName()))
+			.like(ObjectUtils.isNotNull(generalBill.getVoyageNo()), GeneralBill::getVoyageNo, generalBill.getVoyageNo())
+			.and(ObjectUtils.isNotNull(generalBill.getCorpCnName()), i -> i.like(GeneralBill::getCorpCnName, generalBill.getCorpCnName()).or()
+				.like(GeneralBill::getCorpEnName, generalBill.getCorpCnName()))
+			.and(ObjectUtils.isNotNull(generalBill.getPodCnName()), i -> i.like(GeneralBill::getPodCnName, generalBill.getPodCnName()).or()
+				.like(GeneralBill::getPodEnName, generalBill.getPodCnName()).or().like(GeneralBill::getPodCode, generalBill.getPodCnName()))
+			.apply(ObjectUtils.isNotNull(generalBill.getCreateDeptName()), "find_in_set('" + generalBill.getCreateDeptName() + "',create_dept_name)");
+		if (ObjectUtils.isNotNull(generalBill.getEtdList()) && !generalBill.getEtdList().isEmpty()) {
+			lambdaQueryWrapper.ge(GeneralBill::getEtd, generalBill.getEtdList().get(0));
+			lambdaQueryWrapper.le(GeneralBill::getEtd, generalBill.getEtdList().get(1));
+		}
+		if (ObjectUtils.isNotNull(generalBill.getEtaList()) && !generalBill.getEtaList().isEmpty()) {
+			lambdaQueryWrapper.ge(GeneralBill::getEta, generalBill.getEtaList().get(0));
+			lambdaQueryWrapper.le(GeneralBill::getEta, generalBill.getEtaList().get(1));
+		}
+		IPage<GeneralBill> pages = generalBillService.page(Condition.getPage(query), lambdaQueryWrapper);
 		return R.data(pages);
 	}
 

+ 458 - 60
blade-service/blade-los/src/main/java/org/springblade/los/business/locks/service/impl/BillLocksServiceImpl.java

@@ -23,6 +23,10 @@ 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.business.aea.entity.AeaBills;
+import org.springblade.los.business.aea.service.IAeaBillsService;
+import org.springblade.los.business.customsDeclaration.entity.CustomsDeclaration;
+import org.springblade.los.business.customsDeclaration.service.ICustomsDeclarationService;
 import org.springblade.los.business.locks.entity.BillLocks;
 import org.springblade.los.business.locks.mapper.BillLocksMapper;
 import org.springblade.los.business.locks.service.IBillLocksService;
@@ -31,9 +35,12 @@ import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.business.sea.service.IBillsService;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 业务-业务加解锁明细,各分公司独立 服务实现类
@@ -45,16 +52,19 @@ import java.util.List;
 @AllArgsConstructor
 public class BillLocksServiceImpl extends ServiceImpl<BillLocksMapper, BillLocks> implements IBillLocksService {
 
-	private final ISysClient sysClient;
-
 	private final IBillsService billsService;
 
+	private final IAeaBillsService aeaBillsService;
+
+	private final ICustomsDeclarationService customsDeclarationService;
+
 	@Override
 	public IPage<BillLocksVO> selectBillLocksPage(IPage<BillLocksVO> page, BillLocksVO billLocks) {
 		return page.setRecords(baseMapper.selectBillLocksPage(page, billLocks));
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R submitLock(BillLocks billLocks) {
 		if (ObjectUtils.isNull(billLocks.getSrcId())) {
 			throw new RuntimeException("缺少必要参数");
@@ -62,72 +72,460 @@ public class BillLocksServiceImpl extends ServiceImpl<BillLocksMapper, BillLocks
 		if (ObjectUtils.isNull(billLocks.getBusinessType())) {
 			throw new RuntimeException("缺少必要参数");
 		}
-		BillLocks detail = baseMapper.selectOne(new LambdaQueryWrapper<BillLocks>()
-			.eq(BillLocks::getTenantId, AuthUtil.getTenantId())
-			.eq(BillLocks::getIsDeleted, 0)
-			.eq(BillLocks::getSrcId, billLocks.getSrcId()));
-		if ("HYCK,HYJK".contains(billLocks.getBusinessType())) {
-			Bills bills = billsService.getById(billLocks.getSrcId());
-			if (bills == null) {
-				throw new RuntimeException("未查到单据信息");
-			}
-			if (detail != null) {
-				detail.setUpdateTime(new Date());
-				detail.setUpdateUser(AuthUtil.getUserId());
-				detail.setUpdateUserName(AuthUtil.getUserName());
-				detail.setBranchId(bills.getBranchId());
-				detail.setBillNo(bills.getBillNo());
-				detail.setBillDate(bills.getBillDate());
-				detail.setBusinessTypeName(billLocks.getBusinessType());
-				detail.setSrcBillNo(bills.getBillNo());
-				detail.setSrcVesselId(bills.getVesselId());
-				detail.setSrcVesselCnName(bills.getVesselCnName());
-				detail.setSrcVesselEnName(bills.getVesselEnName());
-				detail.setSrcVoyageNo(bills.getVoyageNo());
-				detail.setSrcMblno(bills.getMblno());
-				detail.setSrcRefno(bills.getRefno());
-				detail.setSrcTeamId(Long.parseLong(bills.getTeamId()));
-				detail.setSrcTeamName(bills.getTeamName());
-				detail.setLocked(0);
-				detail.setOperatorId(bills.getOperatorId());
-				detail.setOperatorName(bills.getOperatorName());
-				baseMapper.updateById(detail);
+		List<BillLocks> billLocksList = new ArrayList<>();
+		List<Bills> billsList = new ArrayList<>();
+		List<AeaBills> aeaBillsList = new ArrayList<>();
+		List<CustomsDeclaration> customsDeclarationList = new ArrayList<>();
+		 if ("整船".equals(billLocks.getType())) {
+			if ("HYCK,HYJK".contains(billLocks.getBusinessType())) {
+				Bills bills = billsService.getById(billLocks.getSrcId());
+				if (bills == null) {
+					throw new RuntimeException("未查到单据信息");
+				}
+				List<Bills> billsWholeList = billsService.list(new LambdaQueryWrapper<Bills>()
+					.eq(Bills::getTenantId, AuthUtil.getTenantId())
+					.eq(Bills::getIsDeleted, 0)
+					.eq(Bills::getVesselId, bills.getVesselId())
+					.eq(Bills::getVoyageNo, bills.getVoyageNo())
+					.eq(Bills::getBranchId, bills.getBranchId())
+					.eq(Bills::getTeamId, bills.getTeamId()));
+				List<Long> idList = billsWholeList.stream().map(Bills::getId).collect(Collectors.toList());
+				if (!idList.isEmpty()) {
+					List<BillLocks> detailList = baseMapper.selectList(new LambdaQueryWrapper<BillLocks>()
+						.eq(BillLocks::getTenantId, AuthUtil.getTenantId())
+						.eq(BillLocks::getIsDeleted, 0)
+						.in(BillLocks::getSrcId, idList));
+					for (Bills item : billsWholeList) {
+						if (!detailList.isEmpty()) {
+							BillLocks detail = detailList.stream().filter(e -> e.getSrcId().equals(item.getId()))
+								.findFirst().orElse(null);
+							if (detail != null) {
+								detail.setUpdateTime(new Date());
+								detail.setUpdateUser(AuthUtil.getUserId());
+								detail.setUpdateUserName(AuthUtil.getUserName());
+								detail.setBranchId(item.getBranchId());
+								detail.setBillNo(item.getBillNo());
+								detail.setBillDate(item.getBillDate());
+								detail.setBusinessTypeName(billLocks.getBusinessType());
+								detail.setSrcBillNo(item.getBillNo());
+								detail.setSrcVesselId(item.getVesselId());
+								detail.setSrcVesselCnName(item.getVesselCnName());
+								detail.setSrcVesselEnName(item.getVesselEnName());
+								detail.setSrcVoyageNo(item.getVoyageNo());
+								detail.setSrcMblno(item.getMblno());
+								detail.setSrcRefno(item.getRefno());
+								detail.setSrcTeamId(Long.parseLong(item.getTeamId()));
+								detail.setSrcTeamName(item.getTeamName());
+								detail.setLocked(0);
+								detail.setOperatorId(item.getOperatorId());
+								detail.setOperatorName(item.getOperatorName());
+								billLocksList.add(detail);
+							} else {
+								BillLocks billLocks1 = new BillLocks();
+								billLocks1.setCreateTime(new Date());
+								billLocks1.setCreateUser(AuthUtil.getUserId());
+								billLocks1.setCreateUserName(AuthUtil.getUserName());
+								billLocks1.setBranchId(item.getBranchId());
+								billLocks1.setBillNo(item.getBillNo());
+								billLocks1.setBillDate(item.getBillDate());
+								billLocks1.setBusinessTypeName(billLocks.getBusinessType());
+								billLocks1.setBusinessType(billLocks.getBusinessType());
+								billLocks1.setSrcId(item.getId());
+								billLocks1.setSrcBillNo(item.getBillNo());
+								billLocks1.setSrcVesselId(item.getVesselId());
+								billLocks1.setSrcVesselCnName(item.getVesselCnName());
+								billLocks1.setSrcVesselEnName(item.getVesselEnName());
+								billLocks1.setSrcVoyageNo(item.getVoyageNo());
+								billLocks1.setSrcMblno(item.getMblno());
+								billLocks1.setSrcRefno(item.getRefno());
+								billLocks1.setSrcTeamId(Long.parseLong(item.getTeamId()));
+								billLocks1.setSrcTeamName(item.getTeamName());
+								billLocks1.setLocked(0);
+								billLocks1.setUnlockedCount(0);
+								billLocks1.setOperatorId(item.getOperatorId());
+								billLocks1.setOperatorName(item.getOperatorName());
+								billLocksList.add(billLocks1);
+							}
+						} else {
+							BillLocks billLocks1 = new BillLocks();
+							billLocks1.setCreateTime(new Date());
+							billLocks1.setCreateUser(AuthUtil.getUserId());
+							billLocks1.setCreateUserName(AuthUtil.getUserName());
+							billLocks1.setBranchId(item.getBranchId());
+							billLocks1.setBillNo(item.getBillNo());
+							billLocks1.setBillDate(item.getBillDate());
+							billLocks1.setBusinessTypeName(billLocks.getBusinessType());
+							billLocks1.setBusinessType(billLocks.getBusinessType());
+							billLocks1.setSrcId(item.getId());
+							billLocks1.setSrcBillNo(item.getBillNo());
+							billLocks1.setSrcVesselId(item.getVesselId());
+							billLocks1.setSrcVesselCnName(item.getVesselCnName());
+							billLocks1.setSrcVesselEnName(item.getVesselEnName());
+							billLocks1.setSrcVoyageNo(item.getVoyageNo());
+							billLocks1.setSrcMblno(item.getMblno());
+							billLocks1.setSrcRefno(item.getRefno());
+							billLocks1.setSrcTeamId(Long.parseLong(item.getTeamId()));
+							billLocks1.setSrcTeamName(item.getTeamName());
+							billLocks1.setLocked(0);
+							billLocks1.setUnlockedCount(0);
+							billLocks1.setOperatorId(item.getOperatorId());
+							billLocks1.setOperatorName(item.getOperatorName());
+							billLocksList.add(billLocks1);
+						}
+						item.setLocked(1);
+						billsList.add(item);
+					}
+				}
+			} else if ("KYCK,KYJK".contains(billLocks.getBusinessType())) {
+				AeaBills bills = aeaBillsService.getById(billLocks.getSrcId());
+				if (bills == null) {
+					throw new RuntimeException("未查到单据信息");
+				}
+				List<AeaBills> billsWholeList = aeaBillsService.list(new LambdaQueryWrapper<AeaBills>()
+					.eq(AeaBills::getTenantId, AuthUtil.getTenantId())
+					.eq(AeaBills::getIsDeleted, 0)
+					.eq(AeaBills::getVoyageNo, bills.getVoyageNo())
+					.eq(AeaBills::getBranchId, bills.getBranchId())
+					.eq(AeaBills::getTeamId, bills.getTeamId()));
+				List<Long> idList = billsWholeList.stream().map(AeaBills::getId).collect(Collectors.toList());
+				if (!idList.isEmpty()) {
+					List<BillLocks> detailList = baseMapper.selectList(new LambdaQueryWrapper<BillLocks>()
+						.eq(BillLocks::getTenantId, AuthUtil.getTenantId())
+						.eq(BillLocks::getIsDeleted, 0)
+						.in(BillLocks::getSrcId, idList));
+					for (AeaBills item : billsWholeList) {
+						if (!detailList.isEmpty()) {
+							BillLocks detail = detailList.stream().filter(e -> e.getSrcId().equals(item.getId()))
+								.findFirst().orElse(null);
+							if (detail != null) {
+								detail.setUpdateTime(new Date());
+								detail.setUpdateUser(AuthUtil.getUserId());
+								detail.setUpdateUserName(AuthUtil.getUserName());
+								detail.setBranchId(item.getBranchId());
+								detail.setBillNo(item.getBillNo());
+								detail.setBillDate(item.getBillDate());
+								detail.setBusinessTypeName(billLocks.getBusinessType());
+								detail.setSrcBillNo(item.getBillNo());
+								detail.setSrcVoyageNo(item.getVoyageNo());
+								detail.setSrcMblno(item.getMblno());
+								detail.setSrcRefno(item.getRefno());
+								detail.setSrcTeamId(Long.parseLong(item.getTeamId()));
+								detail.setSrcTeamName(item.getTeamName());
+								detail.setLocked(0);
+								detail.setOperatorId(item.getOperatorId());
+								detail.setOperatorName(item.getOperatorName());
+								billLocksList.add(detail);
+							} else {
+								BillLocks billLocks1 = new BillLocks();
+								billLocks1.setCreateTime(new Date());
+								billLocks1.setCreateUser(AuthUtil.getUserId());
+								billLocks1.setCreateUserName(AuthUtil.getUserName());
+								billLocks1.setBranchId(item.getBranchId());
+								billLocks1.setBillNo(item.getBillNo());
+								billLocks1.setBillDate(item.getBillDate());
+								billLocks1.setBusinessTypeName(billLocks.getBusinessType());
+								billLocks1.setBusinessType(billLocks.getBusinessType());
+								billLocks1.setSrcId(item.getId());
+								billLocks1.setSrcBillNo(item.getBillNo());
+								billLocks1.setSrcVoyageNo(item.getVoyageNo());
+								billLocks1.setSrcMblno(item.getMblno());
+								billLocks1.setSrcRefno(item.getRefno());
+								billLocks1.setSrcTeamId(Long.parseLong(item.getTeamId()));
+								billLocks1.setSrcTeamName(item.getTeamName());
+								billLocks1.setLocked(0);
+								billLocks1.setUnlockedCount(0);
+								billLocks1.setOperatorId(item.getOperatorId());
+								billLocks1.setOperatorName(item.getOperatorName());
+								billLocksList.add(billLocks1);
+							}
+						} else {
+							BillLocks billLocks1 = new BillLocks();
+							billLocks1.setCreateTime(new Date());
+							billLocks1.setCreateUser(AuthUtil.getUserId());
+							billLocks1.setCreateUserName(AuthUtil.getUserName());
+							billLocks1.setBranchId(item.getBranchId());
+							billLocks1.setBillNo(item.getBillNo());
+							billLocks1.setBillDate(item.getBillDate());
+							billLocks1.setBusinessTypeName(billLocks.getBusinessType());
+							billLocks1.setBusinessType(billLocks.getBusinessType());
+							billLocks1.setSrcId(item.getId());
+							billLocks1.setSrcBillNo(item.getBillNo());
+							billLocks1.setSrcVoyageNo(item.getVoyageNo());
+							billLocks1.setSrcMblno(item.getMblno());
+							billLocks1.setSrcRefno(item.getRefno());
+							billLocks1.setSrcTeamId(Long.parseLong(item.getTeamId()));
+							billLocks1.setSrcTeamName(item.getTeamName());
+							billLocks1.setLocked(0);
+							billLocks1.setUnlockedCount(0);
+							billLocks1.setOperatorId(item.getOperatorId());
+							billLocks1.setOperatorName(item.getOperatorName());
+							billLocksList.add(billLocks1);
+						}
+						item.setLocked(1);
+						aeaBillsList.add(item);
+					}
+				}
+			} else if ("BGSE,BGSI,BGAE,BGAI".contains(billLocks.getBusinessType())) {
+				CustomsDeclaration bills = customsDeclarationService.getById(billLocks.getSrcId());
+				if (bills == null) {
+					throw new RuntimeException("未查到单据信息");
+				}
+				List<CustomsDeclaration> billsWholeList = customsDeclarationService.list(new LambdaQueryWrapper<CustomsDeclaration>()
+					.eq(CustomsDeclaration::getTenantId, AuthUtil.getTenantId())
+					.eq(CustomsDeclaration::getIsDeleted, 0)
+					.eq(CustomsDeclaration::getVesselId, bills.getVesselId())
+					.eq(CustomsDeclaration::getBranchId, bills.getBranchId())
+					.eq(CustomsDeclaration::getTeamId, bills.getTeamId()));
+				List<Long> idList = billsWholeList.stream().map(CustomsDeclaration::getId).collect(Collectors.toList());
+				if (!idList.isEmpty()) {
+					List<BillLocks> detailList = baseMapper.selectList(new LambdaQueryWrapper<BillLocks>()
+						.eq(BillLocks::getTenantId, AuthUtil.getTenantId())
+						.eq(BillLocks::getIsDeleted, 0)
+						.in(BillLocks::getSrcId, idList));
+					for (CustomsDeclaration item : billsWholeList) {
+						if (!detailList.isEmpty()) {
+							BillLocks detail = detailList.stream().filter(e -> e.getSrcId().equals(item.getId()))
+								.findFirst().orElse(null);
+							if (detail != null) {
+								detail.setUpdateTime(new Date());
+								detail.setUpdateUser(AuthUtil.getUserId());
+								detail.setUpdateUserName(AuthUtil.getUserName());
+								detail.setBranchId(item.getBranchId());
+								detail.setBillNo(item.getBillNo());
+								detail.setBillDate(item.getBillDate());
+								detail.setBusinessTypeName(billLocks.getBusinessType());
+								detail.setSrcBillNo(item.getBillNo());
+								detail.setSrcVesselId(item.getVesselId());
+								detail.setSrcVesselCnName(item.getVesselCnName());
+								detail.setSrcVesselEnName(item.getVesselEnName());
+								detail.setSrcMblno(item.getMblno());
+								detail.setSrcRefno(item.getRefno());
+								detail.setSrcTeamId(item.getTeamId());
+								detail.setSrcTeamName(item.getTeamName());
+								detail.setLocked(0);
+								billLocksList.add(detail);
+							} else {
+								BillLocks billLocks1 = new BillLocks();
+								billLocks1.setCreateTime(new Date());
+								billLocks1.setCreateUser(AuthUtil.getUserId());
+								billLocks1.setCreateUserName(AuthUtil.getUserName());
+								billLocks1.setBranchId(item.getBranchId());
+								billLocks1.setBillNo(item.getBillNo());
+								billLocks1.setBillDate(item.getBillDate());
+								billLocks1.setBusinessTypeName(billLocks.getBusinessType());
+								billLocks1.setBusinessType(billLocks.getBusinessType());
+								billLocks1.setSrcId(item.getId());
+								billLocks1.setSrcBillNo(item.getBillNo());
+								billLocks1.setSrcVesselId(item.getVesselId());
+								billLocks1.setSrcVesselCnName(item.getVesselCnName());
+								billLocks1.setSrcVesselEnName(item.getVesselEnName());
+								billLocks1.setSrcMblno(item.getMblno());
+								billLocks1.setSrcRefno(item.getRefno());
+								billLocks1.setSrcTeamId(item.getTeamId());
+								billLocks1.setSrcTeamName(item.getTeamName());
+								billLocks1.setLocked(0);
+								billLocks1.setUnlockedCount(0);
+								billLocksList.add(billLocks1);
+							}
+						} else {
+							BillLocks billLocks1 = new BillLocks();
+							billLocks1.setCreateTime(new Date());
+							billLocks1.setCreateUser(AuthUtil.getUserId());
+							billLocks1.setCreateUserName(AuthUtil.getUserName());
+							billLocks1.setBranchId(item.getBranchId());
+							billLocks1.setBillNo(item.getBillNo());
+							billLocks1.setBillDate(item.getBillDate());
+							billLocks1.setBusinessTypeName(billLocks.getBusinessType());
+							billLocks1.setBusinessType(billLocks.getBusinessType());
+							billLocks1.setSrcId(item.getId());
+							billLocks1.setSrcBillNo(item.getBillNo());
+							billLocks1.setSrcVesselId(item.getVesselId());
+							billLocks1.setSrcVesselCnName(item.getVesselCnName());
+							billLocks1.setSrcVesselEnName(item.getVesselEnName());
+							billLocks1.setSrcMblno(item.getMblno());
+							billLocks1.setSrcRefno(item.getRefno());
+							billLocks1.setSrcTeamId(item.getTeamId());
+							billLocks1.setSrcTeamName(item.getTeamName());
+							billLocks1.setLocked(0);
+							billLocks1.setUnlockedCount(0);
+							billLocksList.add(billLocks1);
+						}
+						item.setLocked(1);
+						customsDeclarationList.add(item);
+					}
+				}
 			} else {
-				billLocks.setCreateTime(new Date());
-				billLocks.setCreateUser(AuthUtil.getUserId());
-				billLocks.setCreateUserName(AuthUtil.getUserName());
-				billLocks.setBranchId(bills.getBranchId());
-				billLocks.setBillNo(bills.getBillNo());
-				billLocks.setBillDate(bills.getBillDate());
-				billLocks.setBusinessTypeName(billLocks.getBusinessType());
-				billLocks.setSrcBillNo(bills.getBillNo());
-				billLocks.setSrcVesselId(bills.getVesselId());
-				billLocks.setSrcVesselCnName(bills.getVesselCnName());
-				billLocks.setSrcVesselEnName(bills.getVesselEnName());
-				billLocks.setSrcVoyageNo(bills.getVoyageNo());
-				billLocks.setSrcMblno(bills.getMblno());
-				billLocks.setSrcRefno(bills.getRefno());
-				billLocks.setSrcTeamId(Long.parseLong(bills.getTeamId()));
-				billLocks.setSrcTeamName(bills.getTeamName());
-				billLocks.setLocked(0);
-				billLocks.setUnlockedCount(0);
-				billLocks.setOperatorId(bills.getOperatorId());
-				billLocks.setOperatorName(bills.getOperatorName());
-				baseMapper.insert(billLocks);
+				throw new RuntimeException("业务类型错误,请联系管理员");
 			}
-			bills.setLocked(1);
-			billsService.updateById(bills);
-		} else if ("KYCK,KYJK".contains(billLocks.getBusinessType())) {
-
-		} else if ("BGSE,BGSI,BGAE,BGAI".contains(billLocks.getBusinessType())) {
-
 		} else {
-			throw new RuntimeException("业务类型错误,请联系管理员");
+			 BillLocks detail = baseMapper.selectOne(new LambdaQueryWrapper<BillLocks>()
+				 .eq(BillLocks::getTenantId, AuthUtil.getTenantId())
+				 .eq(BillLocks::getIsDeleted, 0)
+				 .eq(BillLocks::getSrcId, billLocks.getSrcId()));
+			 if ("HYCK,HYJK".contains(billLocks.getBusinessType())) {
+				 Bills bills = billsService.getById(billLocks.getSrcId());
+				 if (bills == null) {
+					 throw new RuntimeException("未查到单据信息");
+				 }
+				 if (detail != null) {
+					 detail.setUpdateTime(new Date());
+					 detail.setUpdateUser(AuthUtil.getUserId());
+					 detail.setUpdateUserName(AuthUtil.getUserName());
+					 detail.setBranchId(bills.getBranchId());
+					 detail.setBillNo(bills.getBillNo());
+					 detail.setBillDate(bills.getBillDate());
+					 detail.setBusinessTypeName(billLocks.getBusinessType());
+					 detail.setSrcBillNo(bills.getBillNo());
+					 detail.setSrcVesselId(bills.getVesselId());
+					 detail.setSrcVesselCnName(bills.getVesselCnName());
+					 detail.setSrcVesselEnName(bills.getVesselEnName());
+					 detail.setSrcVoyageNo(bills.getVoyageNo());
+					 detail.setSrcMblno(bills.getMblno());
+					 detail.setSrcRefno(bills.getRefno());
+					 detail.setSrcTeamId(Long.parseLong(bills.getTeamId()));
+					 detail.setSrcTeamName(bills.getTeamName());
+					 detail.setLocked(0);
+					 detail.setOperatorId(bills.getOperatorId());
+					 detail.setOperatorName(bills.getOperatorName());
+					 billLocksList.add(detail);
+				 } else {
+					 billLocks.setCreateTime(new Date());
+					 billLocks.setCreateUser(AuthUtil.getUserId());
+					 billLocks.setCreateUserName(AuthUtil.getUserName());
+					 billLocks.setBranchId(bills.getBranchId());
+					 billLocks.setBillNo(bills.getBillNo());
+					 billLocks.setBillDate(bills.getBillDate());
+					 billLocks.setBusinessTypeName(billLocks.getBusinessType());
+					 billLocks.setSrcBillNo(bills.getBillNo());
+					 billLocks.setSrcVesselId(bills.getVesselId());
+					 billLocks.setSrcVesselCnName(bills.getVesselCnName());
+					 billLocks.setSrcVesselEnName(bills.getVesselEnName());
+					 billLocks.setSrcVoyageNo(bills.getVoyageNo());
+					 billLocks.setSrcMblno(bills.getMblno());
+					 billLocks.setSrcRefno(bills.getRefno());
+					 billLocks.setSrcTeamId(Long.parseLong(bills.getTeamId()));
+					 billLocks.setSrcTeamName(bills.getTeamName());
+					 billLocks.setLocked(0);
+					 billLocks.setUnlockedCount(0);
+					 billLocks.setOperatorId(bills.getOperatorId());
+					 billLocks.setOperatorName(bills.getOperatorName());
+					 billLocksList.add(billLocks);
+				 }
+				 bills.setLocked(1);
+				 billsList.add(bills);
+			 } else if ("KYCK,KYJK".contains(billLocks.getBusinessType())) {
+				 AeaBills bills = aeaBillsService.getById(billLocks.getSrcId());
+				 if (bills == null) {
+					 throw new RuntimeException("未查到单据信息");
+				 }
+				 if (detail != null) {
+					 detail.setUpdateTime(new Date());
+					 detail.setUpdateUser(AuthUtil.getUserId());
+					 detail.setUpdateUserName(AuthUtil.getUserName());
+					 detail.setBranchId(bills.getBranchId());
+					 detail.setBillNo(bills.getBillNo());
+					 detail.setBillDate(bills.getBillDate());
+					 detail.setBusinessTypeName(billLocks.getBusinessType());
+					 detail.setSrcBillNo(bills.getBillNo());
+					 detail.setSrcVoyageNo(bills.getVoyageNo());
+					 detail.setSrcMblno(bills.getMblno());
+					 detail.setSrcRefno(bills.getRefno());
+					 detail.setSrcTeamId(Long.parseLong(bills.getTeamId()));
+					 detail.setSrcTeamName(bills.getTeamName());
+					 detail.setLocked(0);
+					 detail.setOperatorId(bills.getOperatorId());
+					 detail.setOperatorName(bills.getOperatorName());
+					 billLocksList.add(detail);
+				 }
+				 else {
+					 billLocks.setCreateTime(new Date());
+					 billLocks.setCreateUser(AuthUtil.getUserId());
+					 billLocks.setCreateUserName(AuthUtil.getUserName());
+					 billLocks.setBranchId(bills.getBranchId());
+					 billLocks.setBillNo(bills.getBillNo());
+					 billLocks.setBillDate(bills.getBillDate());
+					 billLocks.setBusinessTypeName(billLocks.getBusinessType());
+					 billLocks.setSrcBillNo(bills.getBillNo());
+					 billLocks.setSrcVoyageNo(bills.getVoyageNo());
+					 billLocks.setSrcMblno(bills.getMblno());
+					 billLocks.setSrcRefno(bills.getRefno());
+					 billLocks.setSrcTeamId(Long.parseLong(bills.getTeamId()));
+					 billLocks.setSrcTeamName(bills.getTeamName());
+					 billLocks.setLocked(0);
+					 billLocks.setUnlockedCount(0);
+					 billLocks.setOperatorId(bills.getOperatorId());
+					 billLocks.setOperatorName(bills.getOperatorName());
+					 billLocksList.add(billLocks);
+				 }
+				 bills.setLocked(1);
+				 aeaBillsList.add(bills);
+			 } else if ("BGSE,BGSI,BGAE,BGAI".contains(billLocks.getBusinessType())) {
+				 CustomsDeclaration bills = customsDeclarationService.getById(billLocks.getSrcId());
+				 if (bills == null) {
+					 throw new RuntimeException("未查到单据信息");
+				 }
+				 if (detail != null) {
+					 detail.setUpdateTime(new Date());
+					 detail.setUpdateUser(AuthUtil.getUserId());
+					 detail.setUpdateUserName(AuthUtil.getUserName());
+					 detail.setBranchId(bills.getBranchId());
+					 detail.setBillNo(bills.getBillNo());
+					 detail.setBillDate(bills.getBillDate());
+					 detail.setBusinessTypeName(billLocks.getBusinessType());
+					 detail.setSrcBillNo(bills.getBillNo());
+					 detail.setSrcVesselId(bills.getVesselId());
+					 detail.setSrcVesselCnName(bills.getVesselCnName());
+					 detail.setSrcVesselEnName(bills.getVesselEnName());
+					 detail.setSrcMblno(bills.getMblno());
+					 detail.setSrcRefno(bills.getRefno());
+					 detail.setSrcTeamId(bills.getTeamId());
+					 detail.setSrcTeamName(bills.getTeamName());
+					 detail.setLocked(0);
+					 billLocksList.add(detail);
+				 }
+				 else {
+					 billLocks.setCreateTime(new Date());
+					 billLocks.setCreateUser(AuthUtil.getUserId());
+					 billLocks.setCreateUserName(AuthUtil.getUserName());
+					 billLocks.setBranchId(bills.getBranchId());
+					 billLocks.setBillNo(bills.getBillNo());
+					 billLocks.setBillDate(bills.getBillDate());
+					 billLocks.setBusinessTypeName(billLocks.getBusinessType());
+					 billLocks.setSrcBillNo(bills.getBillNo());
+					 billLocks.setSrcVesselId(bills.getVesselId());
+					 billLocks.setSrcVesselCnName(bills.getVesselCnName());
+					 billLocks.setSrcVesselEnName(bills.getVesselEnName());
+					 billLocks.setSrcMblno(bills.getMblno());
+					 billLocks.setSrcRefno(bills.getRefno());
+					 billLocks.setSrcTeamId(bills.getTeamId());
+					 billLocks.setSrcTeamName(bills.getTeamName());
+					 billLocks.setLocked(0);
+					 billLocks.setUnlockedCount(0);
+					 billLocksList.add(billLocks);
+				 }
+				 bills.setLocked(1);
+				 customsDeclarationList.add(bills);
+			 } else {
+				 throw new RuntimeException("业务类型错误,请联系管理员");
+			 }
+		}
+		if (!billLocksList.isEmpty()) {
+			this.saveOrUpdateBatch(billLocksList);
+		}
+		if (!billsList.isEmpty()) {
+			billsService.updateBatchById(billsList);
+		}
+		if (!aeaBillsList.isEmpty()) {
+			aeaBillsService.updateBatchById(aeaBillsList);
+		}
+		if (!customsDeclarationList.isEmpty()) {
+			customsDeclarationService.updateBatchById(customsDeclarationList);
 		}
 		return R.data("操作成功");
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R unlock(String ids) {
 		List<BillLocks> billLocksList = baseMapper.selectList(new LambdaQueryWrapper<BillLocks>()
 			.eq(BillLocks::getTenantId, AuthUtil.getTenantId())

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

@@ -1039,18 +1039,14 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		detail.setFeeCenterListC(feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 			.eq(FeeCenter::getIsDeleted, 0)
 			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-			.eq(FeeCenter::getBillType, detail.getBillType())
 			.eq(FeeCenter::getPid, detail.getId())
 			.eq(FeeCenter::getDc, "C")
-			.eq(FeeCenter::getBillNo, detail.getBillNo())
 		));
 		detail.setFeeCenterListD(feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 			.eq(FeeCenter::getIsDeleted, 0)
 			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-			.eq(FeeCenter::getBillType, detail.getBillType())
 			.eq(FeeCenter::getPid, detail.getId())
 			.eq(FeeCenter::getDc, "D")
-			.eq(FeeCenter::getBillNo, detail.getBillNo())
 		));
 		List<Amends> amendsList = amendsMapper.selectList(new LambdaQueryWrapper<Amends>()
 			.eq(Amends::getTenantId, AuthUtil.getTenantId())