Преглед изворни кода

1.海运进出口amend审核通过撤销接口修改
2.船期增加同步相同船名航次起运港单据开船日期接口
3.生成改单费接口逻辑修改,生成的费用自动生成账单并审核通过
4.POD场站列表数据一箱号,OW\放箱号和POD场站显示不同的放箱号问题修改
5.OW拿启用接口增加保存逻辑
6.放箱号占用明细不显示0
7.edi导入时间增加时分秒
8.放箱号,OW拿单据箱号出场后覆盖问题修改
9.复制放箱号清空一些字段数据
10.箱轨迹增加时间查询
11.出场计算超期箱使费日期改为atd

纪新园 пре 2 дана
родитељ
комит
5f24a93439

+ 17 - 10
blade-service-api/blade-los-api/src/main/java/org/springblade/los/box/entity/PutBoxItems.java

@@ -217,24 +217,18 @@ public class PutBoxItems implements Serializable {
 	 * pol预出场日期
 	 */
 	@ApiModelProperty(value = "pol预出场日期")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date polPreAppearanceDate;
 	/**
 	 * pol场站空箱出场日期
 	 */
 	@ApiModelProperty(value = "pol场站空箱出场日期")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date polStationEmptyContainerExitDate;
 	/**
 	 * pol还箱日期
 	 */
 	@ApiModelProperty(value = "pol还箱日期")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date polReturnDate;
 	/**
@@ -246,8 +240,6 @@ public class PutBoxItems implements Serializable {
 	 * pol提箱日期
 	 */
 	@ApiModelProperty(value = "pol提箱日期")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date polPickUpDate;
 	/**
@@ -260,8 +252,6 @@ public class PutBoxItems implements Serializable {
 	 * pod空箱还箱日期
 	 */
 	@ApiModelProperty(value = "pod空箱还箱日期")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date podEmptyContainerReturnDate;
 	/**
@@ -349,6 +339,23 @@ public class PutBoxItems implements Serializable {
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String podCyTel;
 
+	/**
+	 * 实际开船日期
+	 */
+	@ApiModelProperty(value = "实际开船日期")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
+	private Date actualEtd;
+	/**
+	 * 实际到港日期
+	 */
+	@ApiModelProperty(value = "实际到港日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
+	private Date actualEta;
+
 
 	/**
 	 * 临时字段  是否接入业务逻辑

+ 17 - 22
blade-service-api/blade-los-api/src/main/java/org/springblade/los/box/entity/TradingBoxItem.java

@@ -386,16 +386,12 @@ public class TradingBoxItem implements Serializable {
 	 * pol提箱日期
 	 */
 	@ApiModelProperty(value = "pol提箱日期")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date polPickUpDate;
 	/**
 	 * pod还箱日期
 	 */
 	@ApiModelProperty(value = "pod还箱日期")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date podReturnDate;
 	/**
@@ -435,24 +431,18 @@ public class TradingBoxItem implements Serializable {
 	 * pol预出场日期
 	 */
 	@ApiModelProperty(value = "pol预出场日期")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date polPreAppearanceDate;
 	/**
 	 * pol场站空箱出场日期
 	 */
 	@ApiModelProperty(value = "pol场站空箱出场日期")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date polStationEmptyContainerExitDate;
 	/**
 	 * pol还箱日期
 	 */
 	@ApiModelProperty(value = "pol还箱日期")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date polReturnDate;
 	/**
@@ -472,8 +462,6 @@ public class TradingBoxItem implements Serializable {
 	 * pod空箱还箱日期
 	 */
 	@ApiModelProperty(value = "pod空箱还箱日期")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date podEmptyContainerReturnDate;
 	/**
@@ -645,6 +633,23 @@ public class TradingBoxItem implements Serializable {
 	private String workContent;
 
 	/**
+	 * 实际开船日期
+	 */
+	@ApiModelProperty(value = "实际开船日期")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
+	private Date actualEtd;
+	/**
+	 * 实际到港日期
+	 */
+	@ApiModelProperty(value = "实际到港日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
+	private Date actualEta;
+
+	/**
 	 * 起租日期
 	 */
 	@TableField(exist = false)
@@ -677,14 +682,4 @@ public class TradingBoxItem implements Serializable {
 	 */
 	@ApiModelProperty(value = "是否生成PickUp费用")
 	private String whetherGeneratePickUpCost;
-	/**
-	 * 实际开船日期
-	 */
-	@TableField(exist = false)
-	private Date actualEtd;
-	/**
-	 * 实际到港日期
-	 */
-	@TableField(exist = false)
-	private Date actualEta;
 }

+ 176 - 1
blade-service/blade-los/src/main/java/org/springblade/los/Util/BillUtils.java

@@ -10,11 +10,15 @@ import org.springblade.client.feign.IMessageClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.los.basic.business.entity.BusinessType;
+import org.springblade.los.basic.business.service.IBusinessTypeService;
 import org.springblade.los.basic.corps.entity.BCorps;
 import org.springblade.los.basic.corps.service.IBCorpsService;
 import org.springblade.los.basic.cur.entity.BCurExrate;
 import org.springblade.los.basic.fees.entity.BFees;
 import org.springblade.los.basic.fees.service.IBFeesService;
+import org.springblade.los.billno.entity.BusinessBillNo;
+import org.springblade.los.billno.service.IBusinessBillNoService;
 import org.springblade.los.business.files.entity.FilesCenter;
 import org.springblade.los.business.files.service.IFilesCenterService;
 import org.springblade.los.business.release.entity.SeaReleaseBillItems;
@@ -30,9 +34,9 @@ import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.math.BigDecimal;
-import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
@@ -80,6 +84,10 @@ public class BillUtils implements IBillUtils {
 
 	private final IBFeesService bFeesService;
 
+	private final IBusinessTypeService bBusinessTypeService;
+
+	private final IBusinessBillNoService businessBillNoService;
+
 	@Override
 	public void itemCopy(Bills bills, List<Bills> billsList, boolean status) {
 		List<Containers> containersList = containersService.list(new LambdaQueryWrapper<Containers>()
@@ -707,6 +715,7 @@ public class BillUtils implements IBillUtils {
 			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 			.eq(FeeCenter::getIsDeleted, 0)
 			.eq(FeeCenter::getFeeCode, fees.getCode())
+			.eq(FeeCenter::getPid, id)
 			.eq(FeeCenter::getDc, "D"));
 		if (feeCenterList.isEmpty()) {
 			String amendmentFee = sysClient.getParamService("amendment.fee");
@@ -732,6 +741,14 @@ public class BillUtils implements IBillUtils {
 					date = bills.getEta();
 				}
 			}
+			BusinessType businessType = bBusinessTypeService.getOne(new LambdaQueryWrapper<BusinessType>()
+				.eq(BusinessType::getTenantId, AuthUtil.getTenantId())
+				.eq(BusinessType::getIsDeleted, 0)
+				.eq(BusinessType::getStatus, 0)
+				.eq(BusinessType::getCode, "HYZD"));
+			if (businessType == null) {
+				throw new RuntimeException("未找到可用业务类型");
+			}
 			String exrateType = currencyUtils.standardCurrency(branchId);
 			List<BCurExrate> curExrateList = currencyUtils.obtainRate(date, "1", branchId);
 			int count = 1;
@@ -825,8 +842,166 @@ public class BillUtils implements IBillUtils {
 			feeCenter.setCreateUser(AuthUtil.getUserId());
 			feeCenter.setCreateUserName(AuthUtil.getUserName());
 			feeCenter.setCreateTime(new Date());
+
+			FinAccBills data = new FinAccBills();
+			data.setCurCode(feeCenter.getCurCode());
+			data.setGenerationCorpId(feeCenter.getGenerationCorpId());
+			data.setGenerationCorpCnName(feeCenter.getGenerationCorpCnName());
+			data.setGenerationCorpEnName(feeCenter.getGenerationCorpEnName());
+			data.setCreateTime(new Date());
+			data.setCreateUser(AuthUtil.getUserId());
+			data.setCreateUserName(AuthUtil.getUserName());
+			data.setCreateDept(feeCenter.getCreateDept());
+			data.setCreateDeptName(feeCenter.getCreateDeptName());
+			data.setBranchId(feeCenter.getBranchId());
+			data.setBranchName(feeCenter.getBranchName());
+			data.setDeptId(Long.parseLong(feeCenter.getBranchId()));
+			data.setDeptName(feeCenter.getBranchName());
+			data.setBookingAgentId(feeCenter.getBookingAgentId());
+			data.setBookingAgentCnName(feeCenter.getBookingAgentCnName());
+			data.setBookingAgentEnName(feeCenter.getBookingAgentEnName());
+			data.setTaxRate(feeCenter.getTaxRate());
+			data.setAmountTax(feeCenter.getAmountTax());
+			data.setBillBranchId(feeCenter.getBillBranchId());
+			data.setBillBranchName(feeCenter.getBillBranchName());
+			BusinessBillNo businessBillNo = new BusinessBillNo();
+			businessBillNo.setBusinessTypeId(businessType.getId());
+			businessBillNo.setCode("HYZD");
+			businessBillNo.setBranchId(feeCenter.getBranchId());
+			R clientBillNo = businessBillNoService.getBillNoLos(businessBillNo);
+			if (!clientBillNo.isSuccess()) {
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				return R.fail(500, "生成订单编号失败");
+			}
+			data.setBillNo((String) clientBillNo.getData());
+			data.setBillDate(feeCenter.getBillDate());
+			data.setAccountType("LOCAL");
+			data.setAccountDc(feeCenter.getDc());
+			data.setAccountDate(feeCenter.getBillDate());
+			data.setBillKey(feeCenter.getBillKey());
+			data.setBusinessType(feeCenter.getBusinessType());
+			data.setBillType(feeCenter.getBillType());
+			data.setBusinessBillId(feeCenter.getPid());
+			data.setBusinessBillNo(feeCenter.getBillNo());
+			data.setBusinessDate(feeCenter.getBillDate());
+			data.setSrcId(bills.getSrcId());
+			data.setSrcCnName(bills.getSrcCnName());
+			data.setSrcEnName(bills.getSrcEnName());
+			data.setSrcType(bills.getSrcType());
+			data.setOperatorId(bills.getOperatorId());
+			data.setOperatorName(bills.getOperatorName());
+			data.setQuantityCntrDescr(bills.getQuantityCntrDescr());
+			data.setPaymode(feeCenter.getPaymode());
+			data.setCorpId(feeCenter.getCorpId());
+			data.setCorpCnName(feeCenter.getCorpCnName());
+			data.setCorpEnName(feeCenter.getCorpEnName());
+			data.setCorpArgreementNo(bills.getCorpArgreementNo());
+			data.setBillCorpId(feeCenter.getBillCorpId());
+			data.setBillCorpCnName(feeCenter.getBillCorpCnName());
+			data.setBillCorpEnName(feeCenter.getBillCorpEnName());
+			data.setVesselId(feeCenter.getVesselId());
+			data.setVesselCnName(feeCenter.getVesselCnName());
+			data.setVesselEnName(feeCenter.getVesselEnName());
+			data.setVoyageNo(feeCenter.getVoyageNo());
+			data.setMblno(feeCenter.getMblno());
+			data.setHblno(feeCenter.getHblno());
+			data.setRefno(bills.getRefno());
+			data.setBookingNo(bills.getBookingNo());
+			data.setEtd(feeCenter.getEtd());
+			data.setEta(feeCenter.getEta());
+			data.setPolId(feeCenter.getPolId());
+			data.setPolCnName(feeCenter.getPolCnName());
+			data.setPolEnName(feeCenter.getPolEnName());
+			data.setPolNamePrint(bills.getPolNamePrint());
+			data.setPodId(feeCenter.getPodId());
+			data.setPodCnName(feeCenter.getPodCnName());
+			data.setPodCode(feeCenter.getPodCode());
+			data.setPodEnName(feeCenter.getPodEnName());
+			data.setPodNamePrint(bills.getPodNamePrint());
+			data.setTrackingNumber(feeCenter.getTrackingNumber());
+			BigDecimal amountDrLoc = new BigDecimal("0.00");
+			if (exrateType.equals(feeCenter.getCurCode())) {
+				data.setAmountDr(feeCenter.getAmount());
+			} else {
+				data.setAmountDrUsd(feeCenter.getAmount());
+			}
+			if (ObjectUtils.isNotNull(data.getAmountDrUsd()) && ObjectUtils.isNotNull(feeCenter.getExrate())) {
+				BigDecimal drCny = data.getAmountDrUsd().multiply(feeCenter.getExrate());
+				amountDrLoc = amountDrLoc.add(data.getAmountDr()).add(drCny);
+			}
+			data.setAmountDrLoc(amountDrLoc);
+			data.setExrate(feeCenter.getExrate());
+			finAccBillsService.save(data);
+			feeCenter.setAccBillId(data.getId());
+			feeCenter.setAccBillNo(data.getBillNo());
+			feeCenter.setAccDate(data.getBillDate());
+			feeCenter.setAccAmount(amountDrLoc);
+			feeCenter.setAccStatus(1);
+			feeCenter.setAccById(AuthUtil.getUserId());
+			feeCenter.setAccByName(AuthUtil.getUserName());
+			feeCenter.setAuditStatus("4");
+			feeCenter.setVersion("1");
 			feeCenterService.save(feeCenter);
 		}
 		return R.success("操作成功");
 	}
+
+	@Override
+	public R synchronizationEtdData(Long id) {
+		SailingSchedule sailingSchedule = sailingScheduleService.getById(id);
+		if (sailingSchedule != null) {
+			Long vesselId = sailingSchedule.getVesselId();
+			String voyageNo = sailingSchedule.getVoyageNo();
+			Long polId = sailingSchedule.getPolId();
+			Date etd = sailingSchedule.getEtd();
+			List<Bills> billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
+				.eq(Bills::getTenantId, AuthUtil.getTenantId())
+				.eq(Bills::getIsDeleted, 0)
+				.ne(Bills::getBillStatus, 3)
+				.eq(Bills::getVesselId, vesselId)
+				.eq(Bills::getVoyageNo, voyageNo)
+				.ne(Bills::getEtd, etd)
+				.eq(Bills::getPolId, polId));
+			if (!billsList.isEmpty()) {
+				for (Bills item : billsList) {
+					item.setEtd(etd);
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setUpdateUserName(AuthUtil.getUserName());
+					item.setUpdateTime(new Date());
+					billsMapper.updateById(item);
+				}
+				List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+					.eq(FeeCenter::getIsDeleted, 0)
+					.in(FeeCenter::getPid, billsList.stream().map(Bills::getId).distinct().collect(Collectors.toList())));
+				if (!feeCenterList.isEmpty()) {
+					for (FeeCenter item : feeCenterList) {
+						item.setEtd(etd);
+						int version = StringUtil.isBlank(item.getVersion()) ? 1 : Integer.parseInt(item.getVersion());
+						item.setVersion(String.valueOf(version + 1));
+						item.setUpdateUser(AuthUtil.getUserId());
+						item.setUpdateUserName(AuthUtil.getUserName());
+						item.setUpdateTime(new Date());
+					}
+					feeCenterService.updateBatchById(feeCenterList);
+				}
+				List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
+					.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
+					.eq(FinAccBills::getIsDeleted, 0)
+					.in(FinAccBills::getBusinessBillId, billsList.stream().map(Bills::getId).distinct().collect(Collectors.toList())));
+				if (!finAccBillsList.isEmpty()) {
+					for (FinAccBills item : finAccBillsList) {
+						item.setEtd(etd);
+						int version = StringUtil.isBlank(item.getVersion()) ? 1 : Integer.parseInt(item.getVersion());
+						item.setVersion(String.valueOf(version + 1));
+						item.setUpdateUser(AuthUtil.getUserId());
+						item.setUpdateUserName(AuthUtil.getUserName());
+						item.setUpdateTime(new Date());
+					}
+					finAccBillsService.updateBatchById(finAccBillsList);
+				}
+			}
+		}
+		return R.success("操作成功");
+	}
 }

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

@@ -41,4 +41,6 @@ public interface IBillUtils {
 	R updateVerifyData(Long vesselId, String voyageNo, Long polId, Date etd,Long id);
 
 	R generateAmendmentFee(Long id);
+
+	R synchronizationEtdData(Long id);
 }

+ 56 - 62
blade-service/blade-los/src/main/java/org/springblade/los/box/dynamics/service/impl/BoxDynamicsRecordServiceImpl.java

@@ -22,7 +22,6 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
-import org.apache.commons.io.IOUtils;
 import org.springblade.client.entity.Message;
 import org.springblade.client.feign.IMessageClient;
 import org.springblade.core.excel.util.ExcelUtil;
@@ -74,7 +73,6 @@ import org.springblade.los.finance.fee.service.ICostProfitCalculationService;
 import org.springblade.los.finance.fee.service.IFeeCenterService;
 import org.springblade.los.ftp.dto.ApiItem;
 import org.springblade.los.ftp.dto.ApiRequest;
-import org.springblade.los.ftp.dto.ContainerMovement;
 import org.springblade.resource.feign.IOssClient;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
@@ -84,8 +82,6 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.rmi.RemoteException;
@@ -648,7 +644,7 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 		}
 		boxDynamicsRecord.setBoxCode(String.join(",", boxCodeList));
 		boxDynamicsRecord.setContainerNumber(String.join(",", releaseNoList));
-		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 		List<BoxDynamicsRecordItems> itemsList = new ArrayList<>();
 		// 9. 执行明细参数校验
 		validateBasicParamsItem(apiRequest, msg, billsList, putBoxList, boxTypeList);
@@ -693,7 +689,7 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 			try {
 				recordItems.setApproachExitDate(formatter.parse(item.getApproachExitDate()));
 			} catch (ParseException e) {
-				msg.append("进出场日期格式不正确,请传入格式为‘yyyy-MM-dd’正确格式日期;");
+				msg.append("进出场日期格式不正确,请传入格式为‘yyyy-MM-dd HH:mm:ss’正确格式日期;");
 			}
 			itemsList.add(recordItems);
 		}
@@ -1158,12 +1154,11 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 						count = itemsListJC.stream().filter(e -> e.getContainerNumber().equals(item.getContainerNumber())).count();
 					}
 					if (ObjectUtils.isNotNull(item.getCode())) {
-						for (BoxDynamicsRecordItems e : itemsListJC) {
-							if (e.getContainerNumber().equals(item.getContainerNumber()) && ObjectUtils.isNotNull(item.getCode())
-								&& !item.getCode().contains(e.getBoxCode())) {
-								item.setCode(item.getCode() + "," + e.getBoxCode());
-							} else {
-								item.setCode(e.getBoxCode());
+						List<String> codeList = itemsListJC.stream().filter(e -> e.getContainerNumber().equals(item.getContainerNumber()))
+							.map(BoxDynamicsRecordItems::getBoxCode).collect(Collectors.toList());
+						for (String e : codeList) {
+							if (!item.getCode().contains(e)) {
+								item.setCode(item.getCode() + "," + e);
 							}
 						}
 					} else {
@@ -1190,13 +1185,12 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 							} else {
 								count1 = itemsListJC.stream().filter(e -> e.getContainerNumber().equals(item.getContainerNumber())).count();
 							}
-							if (ObjectUtils.isNotNull(item.getCode())) {
-								for (BoxDynamicsRecordItems e : itemsListJC) {
-									if (e.getContainerNumber().equals(item.getContainerNumber()) && ObjectUtils.isNotNull(tradingBox.getCode())
-										&& !tradingBox.getCode().contains(e.getBoxCode())) {
-										tradingBox.setCode(tradingBox.getCode() + "," + e.getBoxCode());
-									} else {
-										tradingBox.setCode(e.getBoxCode());
+							if (ObjectUtils.isNotNull(tradingBox.getCode())) {
+								List<String> codeList = itemsListJC.stream().filter(e -> e.getContainerNumber().equals(item.getContainerNumber()))
+									.map(BoxDynamicsRecordItems::getBoxCode).collect(Collectors.toList());
+								for (String e : codeList) {
+									if (!tradingBox.getCode().contains(e)) {
+										tradingBox.setCode(tradingBox.getCode() + "," + e);
 									}
 								}
 							} else {
@@ -1458,6 +1452,7 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 									if (bills != null) {
 										putBoxItem.setPodFreeBoxUseDays(bills.getPodFreeBoxUseDays());
 										putBoxItem.setEta(bills.getEta());
+										putBoxItem.setActualEta(bills.getActualEta());
 										List<Containers> containersList = containersHYJKList.stream().filter(e -> e.getPid().equals(bills.getId())
 											&& recordItems.getBoxCode().equals(e.getCntrNo())).collect(Collectors.toList());
 										for (Containers item : containersList) {
@@ -1517,6 +1512,7 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 											if (bills != null) {
 												tradingBoxItem.setPodFreeBoxUseDays(bills.getPodFreeBoxUseDays());
 												tradingBoxItem.setEta(bills.getEta());
+												tradingBoxItem.setActualEta(bills.getActualEta());
 											}
 											tradingBoxItemOldList.add(tradingBoxItem);
 										}
@@ -2134,12 +2130,11 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 							count = itemsListZJ.stream().filter(e -> e.getContainerNumber().equals(item.getContainerNumber())).count();
 						}
 						if (ObjectUtils.isNotNull(item.getCode())) {
-							for (BoxDynamicsRecordItems e : itemsListZJ) {
-								if (e.getContainerNumber().equals(item.getContainerNumber()) && ObjectUtils.isNotNull(item.getCode())
-									&& !item.getCode().contains(e.getBoxCode())) {
-									item.setCode(item.getCode() + "," + e.getBoxCode());
-								} else {
-									item.setCode(e.getBoxCode());
+							List<String> codeList = itemsListZJ.stream().filter(e -> e.getContainerNumber().equals(item.getContainerNumber()))
+								.map(BoxDynamicsRecordItems::getBoxCode).collect(Collectors.toList());
+							for (String e : codeList) {
+								if (!item.getCode().contains(e)) {
+									item.setCode(item.getCode() + "," + e);
 								}
 							}
 						} else {
@@ -2166,13 +2161,12 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 								} else {
 									count1 = itemsListJC.stream().filter(e -> e.getContainerNumber().equals(item.getContainerNumber())).count();
 								}
-								if (ObjectUtils.isNotNull(item.getCode())) {
-									for (BoxDynamicsRecordItems e : itemsListZJ) {
-										if (e.getContainerNumber().equals(item.getContainerNumber()) && ObjectUtils.isNotNull(tradingBox.getCode())
-											&& !tradingBox.getCode().contains(e.getBoxCode())) {
-											tradingBox.setCode(tradingBox.getCode() + "," + e.getBoxCode());
-										} else {
-											tradingBox.setCode(e.getBoxCode());
+								if (ObjectUtils.isNotNull(tradingBox.getCode())) {
+									List<String> codeList = itemsListZJ.stream().filter(e -> e.getContainerNumber().equals(item.getContainerNumber()))
+										.map(BoxDynamicsRecordItems::getBoxCode).collect(Collectors.toList());
+									for (String e : codeList) {
+										if (!tradingBox.getCode().contains(e)) {
+											tradingBox.setCode(tradingBox.getCode() + "," + e);
 										}
 									}
 								} else {
@@ -2631,12 +2625,11 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 					List<PutBox> putBoxList1 = new ArrayList<>();
 					for (PutBox item : putBoxes) {
 						if (ObjectUtils.isNotNull(item.getCode())) {
-							for (BoxDynamicsRecordItems e : itemsListZD) {
-								if (e.getContainerNumber().equals(item.getContainerNumber()) && ObjectUtils.isNotNull(item.getCode())
-									&& !item.getCode().contains(e.getBoxCode())) {
-									item.setCode(item.getCode() + "," + e.getBoxCode());
-								} else {
-									item.setCode(e.getBoxCode());
+							List<String> codeList = itemsListZD.stream().filter(e -> e.getContainerNumber().equals(item.getContainerNumber()))
+								.map(BoxDynamicsRecordItems::getBoxCode).collect(Collectors.toList());
+							for (String e : codeList) {
+								if (!item.getCode().contains(e)) {
+									item.setCode(item.getCode() + "," + e);
 								}
 							}
 						} else {
@@ -2671,13 +2664,12 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 						if (!tradingBoxes.isEmpty()) {
 							TradingBox tradingBox = tradingBoxes.stream().filter(e -> e.getId().equals(item.getSrcId())).findFirst().orElse(null);
 							if (tradingBox != null) {
-								if (ObjectUtils.isNotNull(item.getCode())) {
-									for (BoxDynamicsRecordItems e : itemsListZD) {
-										if (e.getContainerNumber().equals(item.getContainerNumber()) && ObjectUtils.isNotNull(tradingBox.getCode())
-											&& !tradingBox.getCode().contains(e.getBoxCode())) {
-											tradingBox.setCode(tradingBox.getCode() + "," + e.getBoxCode());
-										} else {
-											tradingBox.setCode(e.getBoxCode());
+								if (ObjectUtils.isNotNull(tradingBox.getCode())) {
+									List<String> codeList = itemsListZD.stream().filter(e -> e.getContainerNumber().equals(item.getContainerNumber()))
+										.map(BoxDynamicsRecordItems::getBoxCode).collect(Collectors.toList());
+									for (String e : codeList) {
+										if (!tradingBox.getCode().contains(e)) {
+											tradingBox.setCode(tradingBox.getCode() + "," + e);
 										}
 									}
 								} else {
@@ -2999,6 +2991,7 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 								putBoxItem.setUpdateUser(AuthUtil.getUserId());
 								putBoxItem.setUpdateUserName(AuthUtil.getUserName());
 								putBoxItem.setUpdateTime(new Date());
+								putBoxItem.setActualEtd(bills.getActualEtd());
 							} else {
 								putBoxItem = new PutBoxItems();
 								putBoxItem.setBoxClass(putBoxData.getBoxClass());
@@ -3034,6 +3027,7 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 								putBoxItem.setCreateUser(AuthUtil.getUserId());
 								putBoxItem.setCreateUserName(AuthUtil.getUserName());
 								putBoxItem.setCreateTime(new Date());
+								putBoxItem.setActualEtd(bills.getActualEtd());
 							}
 						} else {
 							putBoxItem = new PutBoxItems();
@@ -3070,6 +3064,7 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 							putBoxItem.setCreateUser(AuthUtil.getUserId());
 							putBoxItem.setCreateUserName(AuthUtil.getUserName());
 							putBoxItem.setCreateTime(new Date());
+							putBoxItem.setActualEtd(bills.getActualEtd());
 						}
 						if (ObjectUtils.isNotNull(putBoxData.getBoxEastId()) && !"null".equals(putBoxData.getBoxEastId())) {
 							putBoxItem.setBoxEastId(Long.parseLong(putBoxData.getBoxEastId()));
@@ -3264,6 +3259,7 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 									}
 									tradingBoxItem.setBoxEastId(tradingBox.getPurchaseCompanyId());
 									tradingBoxItem.setBoxEastName(tradingBox.getPurchaseCompanyName());
+									tradingBoxItem.setActualEtd(bills.getActualEtd());
 									tradingBoxItems.add(tradingBoxItem);
 								} else {
 									failureHandling(type, boxDynamicsRecord, "放箱号:" + item.getContainerNumber() + "未查到OW单据");
@@ -3326,12 +3322,11 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 					List<PutBox> putBoxListOld = new ArrayList<>();
 					for (PutBox item : putBoxes) {
 						if (ObjectUtils.isNotNull(item.getCode())) {
-							for (BoxDynamicsRecordItems e : itemsListCC) {
-								if (e.getContainerNumber().equals(item.getContainerNumber()) && ObjectUtils.isNotNull(item.getCode())
-									&& !item.getCode().contains(e.getBoxCode())) {
-									item.setCode(item.getCode() + "," + e.getBoxCode());
-								} else {
-									item.setCode(e.getBoxCode());
+							List<String> codeList = itemsListCC.stream().filter(e -> e.getContainerNumber().equals(item.getContainerNumber()))
+								.map(BoxDynamicsRecordItems::getBoxCode).collect(Collectors.toList());
+							for (String e : codeList) {
+								if (!item.getCode().contains(e)) {
+									item.setCode(item.getCode() + "," + e);
 								}
 							}
 						} else {
@@ -3408,13 +3403,12 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 							if (!tradingBoxes.isEmpty()) {
 								TradingBox tradingBox = tradingBoxes.stream().filter(e -> e.getId().equals(item.getSrcId())).findFirst().orElse(null);
 								if (tradingBox != null) {
-									if (ObjectUtils.isNotNull(item.getCode())) {
-										for (BoxDynamicsRecordItems e : itemsListCC) {
-											if (e.getContainerNumber().equals(item.getContainerNumber()) && ObjectUtils.isNotNull(tradingBox.getCode())
-												&& !tradingBox.getCode().contains(e.getBoxCode())) {
-												tradingBox.setCode(tradingBox.getCode() + "," + e.getBoxCode());
-											} else {
-												tradingBox.setCode(e.getBoxCode());
+									if (ObjectUtils.isNotNull(tradingBox.getCode())) {
+										List<String> codeList = itemsListCC.stream().filter(e -> e.getContainerNumber().equals(item.getContainerNumber()))
+											.map(BoxDynamicsRecordItems::getBoxCode).collect(Collectors.toList());
+										for (String e : codeList) {
+											if (!tradingBox.getCode().contains(e)) {
+												tradingBox.setCode(item.getCode() + "," + e);
 											}
 										}
 									} else {
@@ -3665,7 +3659,7 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 				Bills bills = billsList.stream().filter(e -> e.getHblno().equals(item.getHblno()) && e.getId().equals(containers.getPid()))
 					.findFirst().orElse(null);
 				if (bills == null) {
-					failureHandling(type, boxDynamicsRecord, "未查到提单号:" + item.getMblno() + "海运进出口单据");
+					failureHandling(type, boxDynamicsRecord, "海运出口提单号:" + item.getHblno() + "配箱信息列表中未查到对应箱号:" + item.getBoxCode());
 					return false;
 				}
 				//对应海运进出口单据所属公司本位币
@@ -3674,7 +3668,7 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 				List<BCurExrate> curExrateList = currencyUtils.obtainRate(new Date(), "1", bills.getBranchId());
 				Date polPickUpDate = item.getPolStationEmptyContainerExitDate();
 				//起运港超期天数
-				if (ObjectUtils.isNotNull(polPickUpDate) && ObjectUtils.isNotNull(bills.getEtd())) {
+				if (ObjectUtils.isNotNull(polPickUpDate) && ObjectUtils.isNotNull(bills.getActualEtd())) {
 					//所属公司具体超期标准
 					StorageFees storageFees = this.getStorageFees(storageFeesList, bills, "1");
 					if (storageFees == null) {
@@ -3688,7 +3682,7 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 						failureHandling(type, boxDynamicsRecord, "请先维护基础资料-超期标准");
 						return false;
 					}
-					LocalDateTime ldt1 = bills.getEtd().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+					LocalDateTime ldt1 = bills.getActualEtd().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
 					LocalDateTime ldt2 = polPickUpDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
 					long days = ChronoUnit.DAYS.between(ldt1, ldt2);
 					//超期天数
@@ -3986,7 +3980,7 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 			List<BCurExrate> curExrateList = currencyUtils.obtainRate(new Date(), "1", billsHYJK.getBranchId());
 			//目的港超期天数
 			if (ObjectUtils.isNotNull(item.getPodEmptyContainerReturnDate()) &&
-				ObjectUtils.isNotNull(billsHYJK.getEta())) {
+				ObjectUtils.isNotNull(billsHYJK.getActualEta())) {
 				//所属公司具体超期标准
 				StorageFees storageFees = this.getStorageFees(storageFeesList, billsHYJK, "2");
 				if (storageFees == null) {

+ 42 - 29
blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/PutBoxServiceImpl.java

@@ -50,7 +50,6 @@ import org.springblade.los.box.dto.BoxPoolContainerNumberDTO;
 import org.springblade.los.box.dto.BoxPoolDTO;
 import org.springblade.los.box.dto.BoxPoolItemDTO;
 import org.springblade.los.box.dto.BoxPoolPortDTO;
-import org.springblade.los.box.dynamics.entity.BoxDynamicsRecordItems;
 import org.springblade.los.box.entity.*;
 import org.springblade.los.box.excel.EmptyContainerAppearance;
 import org.springblade.los.box.excel.EmptyContainerAppearanceAnalysis;
@@ -2595,6 +2594,20 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 		details.setUpdateTime(null);
 		details.setUpdateUser(null);
 		details.setSysNo(null);
+		details.setTotalNum(0);
+		details.setSuitcaseNum(0);
+		details.setNotSuitcaseNum(0);
+		details.setStorageNum(0);
+		details.setOccupyNum(0);
+		details.setRemainingNum(0);
+		details.setEffectiveStartDate(null);
+		details.setEffectiveEndDate(null);
+		details.setSrcType("");
+		details.setSrcId(null);
+		details.setSrcNo("");
+		details.setSrcContainerNumber("");
+		details.setWhetherManuallyCreate("0");
+		details.setWhetherDeactivate("0");
 		details.setInternalContainerNumber("");
 		return details;
 	}
@@ -3693,13 +3706,13 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 						.collect(Collectors.toList());
 					for (Containers item : containersList) {
 						if (ObjectUtils.isNull(item.getHblno())) {
-								throw new RuntimeException("分单号不能为空");
+							throw new RuntimeException("分单号不能为空");
 						}
 						//进口分单配箱信息处理
 						//箱档案信息处理
 						Archives archives = archivesList.stream().filter(e -> e.getCode().equals(item.getCntrNo())).findFirst().orElse(null);
 						if (archives == null) {
-								throw new RuntimeException("未查到箱号:" + item.getCntrNo() + "箱档案数据");
+							throw new RuntimeException("未查到箱号:" + item.getCntrNo() + "箱档案数据");
 						}
 						archives.setUpdateTime(new Date());
 						archives.setUpdateUser(AuthUtil.getUserId());
@@ -3743,10 +3756,10 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 										putBoxItem.setUpdateTime(new Date());
 										putBoxItemsOldList.add(putBoxItem);
 									} else {
-											throw new RuntimeException("未查到原放箱号:" + archives.getContainerNumber() + "中箱号为:" + item.getCntrNo() + "数据");
+										throw new RuntimeException("未查到原放箱号:" + archives.getContainerNumber() + "中箱号为:" + item.getCntrNo() + "数据");
 									}
 								} else {
-										throw new RuntimeException("未查到原放箱号:" + archives.getContainerNumber() + "中箱号为:" + item.getCntrNo() + "数据");
+									throw new RuntimeException("未查到原放箱号:" + archives.getContainerNumber() + "中箱号为:" + item.getCntrNo() + "数据");
 								}
 								if ("OW(放)".equals(putBox1.getBoxClass())) {
 									if (!tradingBoxList.isEmpty()) {
@@ -3781,16 +3794,16 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 													tradingBoxItem.setUpdateTime(new Date());
 													tradingBoxItemOldList.add(tradingBoxItem);
 												} else {
-														throw new RuntimeException("未查到原OW单据-放箱号:" + archives.getContainerNumber() + "中箱号是:" + item.getCntrNo() + "数据");
+													throw new RuntimeException("未查到原OW单据-放箱号:" + archives.getContainerNumber() + "中箱号是:" + item.getCntrNo() + "数据");
 												}
 											} else {
-													throw new RuntimeException("未查到原OW单据-放箱号:" + archives.getContainerNumber() + "中箱号是:" + item.getCntrNo() + "数据");
+												throw new RuntimeException("未查到原OW单据-放箱号:" + archives.getContainerNumber() + "中箱号是:" + item.getCntrNo() + "数据");
 											}
 										} else {
-												throw new RuntimeException("未查到原OW单据-放箱号为:" + archives.getContainerNumber());
+											throw new RuntimeException("未查到原OW单据-放箱号为:" + archives.getContainerNumber());
 										}
 									} else {
-											throw new RuntimeException("未查到原OW单据-放箱号为:" + archives.getContainerNumberOw());
+										throw new RuntimeException("未查到原OW单据-放箱号为:" + archives.getContainerNumberOw());
 									}
 								}
 								//pod放箱号处理
@@ -3816,7 +3829,7 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 											businessBillNo.setCode(code);
 											R clientBillNo = businessBillNoService.getBillNoLos(businessBillNo);
 											if (!clientBillNo.isSuccess()) {
-													throw new RuntimeException("生成订单编号失败");
+												throw new RuntimeException("生成订单编号失败");
 											}
 											putBox2.setSysNo((String) clientBillNo.getData());
 											putBox2.setContainerNumber(archives.getContainerNumber());
@@ -3827,7 +3840,7 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 											businessBillNo1.setCode("FXH-N");
 											R clientBillNo1 = businessBillNoService.getBillNoLos(businessBillNo1);
 											if (!clientBillNo1.isSuccess()) {
-													throw new RuntimeException("生成订单编号失败");
+												throw new RuntimeException("生成订单编号失败");
 											}
 											putBox2.setInternalContainerNumber((String) clientBillNo1.getData());
 											putBox2.setPolId(billsHYJK.getPodId());
@@ -3863,7 +3876,7 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 										businessBillNo.setCode(code);
 										R clientBillNo = businessBillNoService.getBillNoLos(businessBillNo);
 										if (!clientBillNo.isSuccess()) {
-												throw new RuntimeException("生成订单编号失败");
+											throw new RuntimeException("生成订单编号失败");
 										}
 										putBox.setSysNo((String) clientBillNo.getData());
 										putBox.setContainerNumber(archives.getContainerNumber());
@@ -3877,7 +3890,7 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 										businessBillNo1.setCode("FXH-N");
 										R clientBillNo1 = businessBillNoService.getBillNoLos(businessBillNo1);
 										if (!clientBillNo1.isSuccess()) {
-												throw new RuntimeException("生成订单编号失败");
+											throw new RuntimeException("生成订单编号失败");
 										}
 										putBox.setInternalContainerNumber((String) clientBillNo1.getData());
 										putBox.setPolId(billsHYJK.getPodId());
@@ -3920,10 +3933,10 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 										putBoxItem.setUpdateTime(new Date());
 										putBoxItemsOldList.add(putBoxItem);
 									} else {
-											throw new RuntimeException("未查到原放箱号:" + archives.getContainerNumber() + "中箱号为:" + item.getCntrNo() + "数据");
+										throw new RuntimeException("未查到原放箱号:" + archives.getContainerNumber() + "中箱号为:" + item.getCntrNo() + "数据");
 									}
 								} else {
-										throw new RuntimeException("未查到原放箱号:" + archives.getContainerNumber() + "中箱号为:" + item.getCntrNo() + "数据");
+									throw new RuntimeException("未查到原放箱号:" + archives.getContainerNumber() + "中箱号为:" + item.getCntrNo() + "数据");
 								}
 								if (!tradingBoxList.isEmpty()) {
 									TradingBox tradingBox = tradingBoxList.stream().filter(e -> e.getId().equals(putBox1.getSrcId()))
@@ -3957,22 +3970,22 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 												tradingBoxItem.setUpdateTime(new Date());
 												tradingBoxItemOldList.add(tradingBoxItem);
 											} else {
-													throw new RuntimeException("未查到原OW单据-放箱号:" + archives.getContainerNumber() + "中箱号是:" + item.getCntrNo() + "数据");
+												throw new RuntimeException("未查到原OW单据-放箱号:" + archives.getContainerNumber() + "中箱号是:" + item.getCntrNo() + "数据");
 											}
 										} else {
-												throw new RuntimeException("未查到原OW单据-放箱号:" + archives.getContainerNumber() + "中箱号是:" + item.getCntrNo() + "数据");
+											throw new RuntimeException("未查到原OW单据-放箱号:" + archives.getContainerNumber() + "中箱号是:" + item.getCntrNo() + "数据");
 										}
 									} else {
-											throw new RuntimeException("未查到原OW单据-放箱号为:" + archives.getContainerNumber());
+										throw new RuntimeException("未查到原OW单据-放箱号为:" + archives.getContainerNumber());
 									}
 								} else {
-										throw new RuntimeException("未查到来源单据-放箱号为:" + archives.getContainerNumberOw());
+									throw new RuntimeException("未查到来源单据-放箱号为:" + archives.getContainerNumberOw());
 								}
 								if ("OW(拿)".contains(putBox1.getBoxClass())) {
 									archivesDateleList.add(archives.getId());
 								}
 							} else {
-									throw new RuntimeException("放箱号:" + archives.getContainerNumberOw() + "单据类型错误,请联系管理员");
+								throw new RuntimeException("放箱号:" + archives.getContainerNumberOw() + "单据类型错误,请联系管理员");
 							}
 							item.setBoxSrcType(putBox1.getBoxClass());
 						}
@@ -4006,7 +4019,7 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 						//箱档案信息处理
 						Archives archives = archivesList.stream().filter(e -> e.getCode().equals(item.getCntrNo())).findFirst().orElse(null);
 						if (archives == null) {
-								throw new RuntimeException("未查到箱号:" + item.getCntrNo() + "箱档案数据");
+							throw new RuntimeException("未查到箱号:" + item.getCntrNo() + "箱档案数据");
 						}
 						//放箱号数据处理
 						PutBox putBox1 = putBoxList.stream().filter(e -> e.getContainerNumber().equals(archives.getContainerNumberOw()))
@@ -4094,7 +4107,7 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 									}
 									putBoxItemsNewList.add(putBoxItem);
 								} else {
-										throw new RuntimeException("未查到pod放箱号单据信息");
+									throw new RuntimeException("未查到pod放箱号单据信息");
 								}
 							}
 						}
@@ -5891,13 +5904,13 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 	public R updateBatchByIdAndVersion(List<PutBox> putBoxList) {
 		List<Long> idList = putBoxList.stream().map(PutBox::getId).collect(Collectors.toList());
 		List<PutBox> putBoxOldList = baseMapper.selectList(new LambdaQueryWrapper<PutBox>()
-			.eq(PutBox::getTenantId,AuthUtil.getTenantId())
-			.eq(PutBox::getIsDeleted,0)
-			.in(PutBox::getId,idList));
-		for (PutBox putBox : putBoxList){
-			PutBox putBox1 = putBoxOldList.stream().filter(e-> e.getId().equals(putBox.getId())).findFirst().orElse(null);
-			if (putBox1 != null){
-				if (!Objects.equals(putBox1.getVersion(), putBox.getVersion())){
+			.eq(PutBox::getTenantId, AuthUtil.getTenantId())
+			.eq(PutBox::getIsDeleted, 0)
+			.in(PutBox::getId, idList));
+		for (PutBox putBox : putBoxList) {
+			PutBox putBox1 = putBoxOldList.stream().filter(e -> e.getId().equals(putBox.getId())).findFirst().orElse(null);
+			if (putBox1 != null) {
+				if (!Objects.equals(putBox1.getVersion(), putBox.getVersion())) {
 					throw new RuntimeException("数据已被其他用户更新,请刷新后重试");
 				}
 			}

+ 4 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/TradingBoxServiceImpl.java

@@ -1595,6 +1595,10 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 		TradingBox tradingBox = baseMapper.selectById(detail.getId());
 		int version = StringUtil.isBlank(tradingBox.getVersion()) ? 1 : Integer.parseInt(tradingBox.getVersion());
 		tradingBox.setVersion(String.valueOf(version + 1));
+		tradingBox.setPolStationId(detail.getPolStationId());
+		tradingBox.setPolStationCode(detail.getPolStationCode());
+		tradingBox.setPolStationCname(detail.getPolStationCname());
+		tradingBox.setPolStationEname(detail.getPolStationEname());
 		List<TradingBoxType> boxTypeList = tradingBoxTypeService.list(new LambdaQueryWrapper<TradingBoxType>()
 			.eq(TradingBoxType::getTenantId, AuthUtil.getTenantId())
 			.eq(TradingBoxType::getIsDeleted, 0)

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

@@ -35,7 +35,6 @@ import org.springblade.los.business.amends.entity.Amends;
 import org.springblade.los.business.amends.mapper.AmendsMapper;
 import org.springblade.los.business.amends.service.IAmendsService;
 import org.springblade.los.business.amends.vo.AmendsVO;
-import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.check.dto.LosAuditProecessDTO;
 import org.springblade.los.check.entity.LosAuditPathsActs;
 import org.springblade.los.check.entity.LosAuditPathsLevels;
@@ -46,7 +45,6 @@ import org.springblade.los.finance.fee.entity.FeeCenter;
 import org.springblade.los.finance.fee.entity.FinAccBills;
 import org.springblade.los.finance.fee.service.IFeeCenterService;
 import org.springblade.los.finance.fee.service.IFinAccBillsService;
-import org.springblade.los.finance.genleg.entity.FinPeriod;
 import org.springblade.los.finance.genleg.mapper.FinPeriodMapper;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
@@ -54,8 +52,6 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.math.BigDecimal;
-import java.time.LocalDate;
-import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -115,7 +111,7 @@ public class AmendsServiceImpl extends ServiceImpl<AmendsMapper, Amends> impleme
 		if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
 			deptName = res.getData();
 		}
-		if (ObjectUtils.isNull(amends.getCreateTime())){
+		if (ObjectUtils.isNull(amends.getCreateTime())) {
 			amends.setCreateTime(new Date());
 		}
 		amends.setBillDate(amends.getCreateTime());
@@ -377,6 +373,16 @@ public class AmendsServiceImpl extends ServiceImpl<AmendsMapper, Amends> impleme
 		declare.setVersion(String.valueOf(version + 1));
 		declare.setStatus(0);
 		baseMapper.updateById(declare);
+		List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getIsDeleted, 0)
+			.eq(FeeCenter::getPid, declare.getId())
+			.eq(FeeCenter::getAccStatus, "1"));
+		if (!feeCenterList.isEmpty()) {
+			FinAccBills finAccBills = new FinAccBills();
+			finAccBills.setFeeCenterList(feeCenterList);
+			finAccBillsService.revokeBill(finAccBills);
+		}
 		return declare;
 	}
 

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

@@ -1104,5 +1104,14 @@ public class BillsController extends BladeController {
 		return billUtils.generateAmendmentFee(id);
 	}
 
+
+	/**
+	 * 同步相同船名航次起运港单据开船日期
+	 */
+	@GetMapping("/synchronizationEtdData")
+	public R synchronizationEtdData(@RequestParam("id") Long id) {
+		return billUtils.synchronizationEtdData(id);
+	}
+
 }
 

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

@@ -164,6 +164,7 @@ public class SeaContainerNumberItemController extends BladeController {
 			.eq(SeaContainerNumberItem::getTenantId, AuthUtil.getTenantId())
 			.eq(SeaContainerNumberItem::getIsDeleted, 0)
 			.eq(SeaContainerNumberItem::getSrcId, id)
+				.apply("occupy_num - out_num != 0")
 			.eq(SeaContainerNumberItem::getWhetherAppearStatus, "0"));
 		if (!list.isEmpty()) {
 			List<Long> idList = list.stream().map(SeaContainerNumberItem::getPid).distinct().collect(Collectors.toList());

+ 2 - 2
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/ContainersMapper.xml

@@ -86,7 +86,7 @@
         se.voyage_no as voyageNo,
         se.pol_cn_name as polName,
         se.pod_cn_name as podName,
-        sc.container_number as containerNumber,
+        cn.container_number as containerNumber,
         se.box_belongs_to as boxBelongsTo,
         cn.bus_type as busType,
         sc.cntr_no as cntrNo,
@@ -192,7 +192,7 @@
         se.voyage_no as voyageNo,
         se.pol_cn_name as polName,
         se.pod_cn_name as podName,
-        sc.container_number as containerNumber,
+        cn.container_number as containerNumber,
         se.box_belongs_to as boxBelongsTo,
         cn.bus_type as busType,
         sc.cntr_no as cntrNo,