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

1.箱轨迹箱动态检索条件修改
2.退租费用申请删除问题修改
3.进出场记录明细删除主表合计字段重新赋值
4.进出场记录同步接口代码优化提取公共方法
5.空箱出场是多个提单号一起占用记录修改出场数量问题修改
6.配箱列表增加判断主单随便删除
7.ow(拿同步放箱号时候备注未同步修改)

纪新园 пре 3 дана
родитељ
комит
d1dcc99869
14 измењених фајлова са 800 додато и 837 уклоњено
  1. 5 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/box/entity/PutBoxItems.java
  2. 1 0
      blade-service/blade-los/src/main/java/org/springblade/los/Util/ArchivesUtils.java
  3. 590 0
      blade-service/blade-los/src/main/java/org/springblade/los/Util/EntryExitDataHandleUtils.java
  4. 2 2
      blade-service/blade-los/src/main/java/org/springblade/los/Util/ExchangeRateUtils.java
  5. 11 1
      blade-service/blade-los/src/main/java/org/springblade/los/box/controller/ArchivesTrajectoryController.java
  6. 48 0
      blade-service/blade-los/src/main/java/org/springblade/los/box/dynamics/service/impl/BoxDynamicsRecordItemsServiceImpl.java
  7. 63 787
      blade-service/blade-los/src/main/java/org/springblade/los/box/dynamics/service/impl/BoxDynamicsRecordServiceImpl.java
  8. 2 2
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/ExpenseApplicationServiceImpl.java
  9. 7 4
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/TradingBoxServiceImpl.java
  10. 1 16
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/ContainersController.java
  11. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IContainersService.java
  12. 35 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/ContainersServiceImpl.java
  13. 32 24
      blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java
  14. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterUpdateRecordServiceImpl.java

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

@@ -383,4 +383,9 @@ public class PutBoxItems implements Serializable {
 	 */
 	@TableField(exist = false)
 	private String temporaryId;
+	/**
+	 * 临时状态
+	 */
+	@TableField(exist = false)
+	private Boolean temporaryStatus;
 }

+ 1 - 0
blade-service/blade-los/src/main/java/org/springblade/los/Util/ArchivesUtils.java

@@ -68,6 +68,7 @@ public class ArchivesUtils {
 	 */
 	public static Archives dataAssembly(Archives archives, BoxDynamicsRecordItems item, String boxDynamics, String status,String containerNumberTypeOw) {
 		if (ObjectUtils.isNull(archives) || archives.getId() == null){
+			archives = new Archives();
 			archives.setCode(item.getBoxCode());
 			archives.setCreateTime(new Date());
 			archives.setCreateUser(AuthUtil.getUserId());

+ 590 - 0
blade-service/blade-los/src/main/java/org/springblade/los/Util/EntryExitDataHandleUtils.java

@@ -0,0 +1,590 @@
+package org.springblade.los.Util;
+
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.los.box.dynamics.entity.BoxDynamicsRecordItems;
+import org.springblade.los.box.entity.PutBox;
+import org.springblade.los.box.entity.PutBoxItems;
+import org.springblade.los.box.entity.TradingBox;
+import org.springblade.los.box.entity.TradingBoxItem;
+import org.springblade.los.business.sea.entity.Bills;
+
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
+import java.util.Date;
+
+/**
+ * @author :jixinyuan
+ * @date : 2026/3/25
+ */
+public class EntryExitDataHandleUtils {
+
+
+	/**
+	 * 放箱号箱明细数据处理
+	 *
+	 * @param putBoxItem       箱明细数据
+	 * @param item             进出场记录数据
+	 * @param putBoxData       放箱号数据
+	 * @param whetherExistence 提单号对应海运单据是否存在
+	 * @param bills            海运单据数据
+	 * @param boxDynamics      箱动态
+	 * @param status           箱状态
+	 * @param type             1=进场,2=调拨进场,3=出场,4=调箱出场,5=客户还箱,6=无货返空,7=退租出场,8=OW放箱出场
+	 */
+	public static PutBoxItems putBoxItemDataHandle(PutBoxItems putBoxItem, BoxDynamicsRecordItems item, PutBox putBoxData,
+												   boolean whetherExistence, Bills bills, String boxDynamics, String status, String type) {
+		if ("8".equals(type)) {
+			putBoxItem = new PutBoxItems();
+			putBoxItem.setBoxClass(putBoxData.getBoxClass());
+			putBoxItem.setBoxBelongsTo("SOC");
+			putBoxItem.setBoxCondition("新");
+			putBoxItem.setStatus(status);
+			putBoxItem.setPid(putBoxData.getId());
+			putBoxItem.setContainerNumber(item.getContainerNumber());
+			putBoxItem.setBoxCode(item.getBoxCode());
+			putBoxItem.setBoxType(item.getBoxType());
+			putBoxItem.setCreateUser(AuthUtil.getUserId());
+			putBoxItem.setCreateUserName(AuthUtil.getUserName());
+			putBoxItem.setCreateTime(new Date());
+			//放箱号目的港是否单一港口  是 明细目的港场站自动赋值主表
+			if (ObjectUtils.isNotNull(putBoxData.getPodId()) && !putBoxData.getPodId().contains(",")) {
+				putBoxItem.setPodStationId(putBoxData.getPodStationId());
+				putBoxItem.setPodStationCode(putBoxData.getPodStationCode());
+				putBoxItem.setPodStationCname(putBoxData.getPodStationCname());
+				putBoxItem.setPodStationEname(putBoxData.getPodStationEname());
+				putBoxItem.setPodCyAddress(putBoxData.getPodCyAddress());
+				putBoxItem.setPodCyContact(putBoxData.getPodCyContact());
+				putBoxItem.setPodCyEmail(putBoxData.getPodCyEmail());
+				putBoxItem.setPodCyTel(putBoxData.getPodCyTel());
+			}
+			putBoxItem.setPolCyId(item.getStationId());
+			putBoxItem.setPolCyCode(item.getStationCode());
+			putBoxItem.setPolCyCname(item.getStationCname());
+			putBoxItem.setPolCyEname(item.getStationEname());
+			if (ObjectUtils.isNull(putBoxItem.getPolPickUpDate())) {
+				putBoxItem.setPolPickUpDate(item.getApproachExitDate());
+				putBoxItem.setPolPreAppearanceDate(item.getApproachExitDate());
+			}
+			putBoxItem.setPolStationEmptyContainerExitDate(item.getApproachExitDate());
+			putBoxItem.setHblno(item.getHblno());
+		} else if ("3".equals(type)) {
+			putBoxItem.setPid(putBoxData.getId());
+			putBoxItem.setUpdateUser(AuthUtil.getUserId());
+			putBoxItem.setUpdateUserName(AuthUtil.getUserName());
+			putBoxItem.setUpdateTime(new Date());
+			//放箱号目的港是否单一港口  是 明细目的港场站自动赋值主表
+			if (ObjectUtils.isNotNull(putBoxData.getPodId()) && !putBoxData.getPodId().contains(",")) {
+				putBoxItem.setPodStationId(putBoxData.getPodStationId());
+				putBoxItem.setPodStationCode(putBoxData.getPodStationCode());
+				putBoxItem.setPodStationCname(putBoxData.getPodStationCname());
+				putBoxItem.setPodStationEname(putBoxData.getPodStationEname());
+				putBoxItem.setPodCyAddress(putBoxData.getPodCyAddress());
+				putBoxItem.setPodCyContact(putBoxData.getPodCyContact());
+				putBoxItem.setPodCyEmail(putBoxData.getPodCyEmail());
+				putBoxItem.setPodCyTel(putBoxData.getPodCyTel());
+			}
+			putBoxItem.setPolCyId(item.getStationId());
+			putBoxItem.setPolCyCode(item.getStationCode());
+			putBoxItem.setPolCyCname(item.getStationCname());
+			putBoxItem.setPolCyEname(item.getStationEname());
+			if (ObjectUtils.isNull(putBoxItem.getPolPickUpDate())) {
+				putBoxItem.setPolPickUpDate(item.getApproachExitDate());
+				putBoxItem.setPolPreAppearanceDate(item.getApproachExitDate());
+			}
+			putBoxItem.setPolStationEmptyContainerExitDate(item.getApproachExitDate());
+			//海运出口信息赋值
+			if (whetherExistence && bills != null) {
+				putBoxItem.setMblno(bills.getMblno());
+				putBoxItem.setAgentName(bills.getForeignAgencyCnName());
+				putBoxItem.setCorpId(bills.getCorpId());
+				putBoxItem.setCorpName(bills.getCorpCnName());
+				putBoxItem.setVoyage(bills.getVoyageNo());
+				putBoxItem.setShipNameId(bills.getVesselId());
+				putBoxItem.setAgentName(bills.getForeignAgencyCnName());
+				putBoxItem.setShipCname(bills.getVesselCnName());
+				putBoxItem.setShipEname(bills.getVesselEnName());
+				putBoxItem.setEtd(bills.getEtd());
+				putBoxItem.setActualEtd(bills.getActualEtd());
+				putBoxItem.setPolFreeBoxUseDays(bills.getPolFreeBoxUseDays());
+			} else {
+				//未查到海运单据则未占用
+				putBoxItem.setUnoccupied("1");
+			}
+			putBoxItem.setHblno(item.getHblno());
+		} else if ("4".equals(type)) {
+			if (putBoxItem != null) {
+				putBoxItem.setPid(putBoxData.getId());
+				putBoxItem.setUpdateUser(AuthUtil.getUserId());
+				putBoxItem.setUpdateUserName(AuthUtil.getUserName());
+				putBoxItem.setUpdateTime(new Date());
+			} else {
+				putBoxItem = new PutBoxItems();
+				putBoxItem.setBoxClass(putBoxData.getBoxClass());
+				putBoxItem.setBoxBelongsTo("SOC");
+				putBoxItem.setBoxCondition("新");
+				putBoxItem.setPid(putBoxData.getId());
+				putBoxItem.setContainerNumber(item.getContainerNumber());
+				putBoxItem.setBoxCode(item.getBoxCode());
+				putBoxItem.setBoxType(item.getBoxType());
+				putBoxItem.setCreateUser(AuthUtil.getUserId());
+				putBoxItem.setCreateUserName(AuthUtil.getUserName());
+				putBoxItem.setCreateTime(new Date());
+			}
+			putBoxItem.setPolCyId(item.getStationId());
+			putBoxItem.setPolCyCode(item.getStationCode());
+			putBoxItem.setPolCyCname(item.getStationCname());
+			putBoxItem.setPolCyEname(item.getStationEname());
+			putBoxItem.setPolStationEmptyContainerExitDate(item.getApproachExitDate());
+		} else if ("7".equals(type)) {
+			putBoxItem.setPid(putBoxData.getId());
+			putBoxItem.setPodStationId(item.getStationId());
+			putBoxItem.setPodStationCode(item.getStationCname());
+			putBoxItem.setPodStationCname(item.getStationEname());
+			putBoxItem.setPodStationEname(item.getStationCode());
+
+			putBoxItem.setUpdateUser(AuthUtil.getUserId());
+			putBoxItem.setUpdateUserName(AuthUtil.getUserName());
+			putBoxItem.setUpdateTime(new Date());
+		} else if ("1".equals(type)) {
+			if (putBoxItem != null) {
+				if ("使用中".equals(putBoxItem.getStatus())) {
+					putBoxItem.setTemporaryStatus(true);
+				}
+				putBoxItem.setUpdateUser(AuthUtil.getUserId());
+				putBoxItem.setUpdateUserName(AuthUtil.getUserName());
+				putBoxItem.setUpdateTime(new Date());
+
+				putBoxItem.setPodEmptyContainerReturnDate(null);
+				putBoxItem.setPodStationId(null);
+				putBoxItem.setPodStationCode(null);
+				putBoxItem.setPodStationCname(null);
+				putBoxItem.setPodStationEname(null);
+				putBoxItem.setEta(null);
+				putBoxItem.setCorpId(0L);
+				putBoxItem.setCorpName("");
+				putBoxItem.setMblno("");
+				putBoxItem.setHblno("");
+				putBoxItem.setShipNameId(0L);
+				putBoxItem.setShipCname("");
+				putBoxItem.setShipEname("");
+				putBoxItem.setShipCode("");
+				putBoxItem.setVoyage("");
+				putBoxItem.setPodCyAddress("");
+				putBoxItem.setPodCyContact("");
+				putBoxItem.setPodCyEmail("");
+				putBoxItem.setPodCyTel("");
+				putBoxItem.setEtd(null);
+				putBoxItem.setPolFreeBoxUseDays(0);
+				putBoxItem.setPolStationEmptyContainerExitDate(null);
+				putBoxItem.setPolReturnDate(null);
+				putBoxItem.setPolOverdueBoxUseDays(0);
+				putBoxItem.setPodFreeBoxUseDays(0);
+				putBoxItem.setPodBoxUseDays(0);
+				putBoxItem.setAgentName("");
+				putBoxItem.setActualEtd(null);
+				putBoxItem.setActualEta(null);
+			} else {
+				putBoxItem = new PutBoxItems();
+				putBoxItem.setBoxClass(putBoxData.getBoxClass());
+				putBoxItem.setBoxBelongsTo("SOC");
+				putBoxItem.setBoxCondition("新");
+				putBoxItem.setContainerNumber(item.getContainerNumber());
+				putBoxItem.setBoxCode(item.getBoxCode());
+				putBoxItem.setBoxType(item.getBoxType());
+				putBoxItem.setCreateUser(AuthUtil.getUserId());
+				putBoxItem.setCreateUserName(AuthUtil.getUserName());
+				putBoxItem.setCreateTime(new Date());
+				putBoxItem.setTemporaryStatus(false);
+				putBoxItem.setPid(putBoxData.getId());
+			}
+			putBoxItem.setMblno(item.getMblno());
+			putBoxItem.setPolCyId(item.getStationId());
+			putBoxItem.setPolCyCode(item.getStationCode());
+			putBoxItem.setPolCyCname(item.getStationCname());
+			putBoxItem.setPolCyEname(item.getPortEname());
+			putBoxItem.setPolPickUpDate(item.getApproachExitDate());
+			putBoxItem.setPolPreAppearanceDate(item.getApproachExitDate());
+		} else if ("5".equals(type)) {
+			putBoxItem.setPodEmptyContainerReturnDate(item.getApproachExitDate());
+			putBoxItem.setPodStationId(item.getStationId());
+			putBoxItem.setPodStationCode(item.getStationCname());
+			putBoxItem.setPodStationCname(item.getStationEname());
+			putBoxItem.setPodStationEname(item.getStationCode());
+			putBoxItem.setBoxStatus(item.getBoxStatus());
+			if ("待使用".equals(putBoxItem.getStatus())) {
+				putBoxItem.setTemporaryStatus(true);
+			}
+			putBoxItem.setUpdateUser(AuthUtil.getUserId());
+			putBoxItem.setUpdateUserName(AuthUtil.getUserName());
+			putBoxItem.setUpdateTime(new Date());
+			if (ObjectUtils.isNotNull(putBoxItem.getPolStationEmptyContainerExitDate()) &&
+				ObjectUtils.isNotNull(putBoxItem.getPodEmptyContainerReturnDate())) {
+				LocalDateTime ldt2 = putBoxItem.getPolStationEmptyContainerExitDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+				LocalDateTime ldt1 = putBoxItem.getPodEmptyContainerReturnDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+				int overdueDays = (int) ChronoUnit.DAYS.between(ldt2, ldt1);
+				putBoxItem.setPodBoxUseDays(Integer.parseInt(overdueDays + ""));
+			}
+		}else if ("2".equals(type)){
+			if (putBoxItem != null) {
+				if ("使用中".equals(putBoxItem.getStatus())) {
+					putBoxItem.setTemporaryStatus(true);
+				}
+				putBoxItem.setUpdateUser(AuthUtil.getUserId());
+				putBoxItem.setUpdateUserName(AuthUtil.getUserName());
+				putBoxItem.setUpdateTime(new Date());
+			} else {
+				putBoxItem = new PutBoxItems();
+				putBoxItem.setBoxClass(putBoxData.getBoxClass());
+				putBoxItem.setBoxBelongsTo("SOC");
+				putBoxItem.setBoxCondition("新");
+				putBoxItem.setContainerNumber(item.getContainerNumber());
+				putBoxItem.setBoxCode(item.getBoxCode());
+				putBoxItem.setBoxType(item.getBoxType());
+				putBoxItem.setBoxClass(putBoxData.getBoxClass());
+				putBoxItem.setCreateUser(AuthUtil.getUserId());
+				putBoxItem.setCreateUserName(AuthUtil.getUserName());
+				putBoxItem.setCreateTime(new Date());
+				putBoxItem.setPid(putBoxData.getId());
+			}
+			putBoxItem.setPolCyId(item.getStationId());
+			putBoxItem.setPolCyCode(item.getStationCode());
+			putBoxItem.setPolCyCname(item.getStationCname());
+			putBoxItem.setPolCyEname(item.getPortEname());
+			putBoxItem.setPolPickUpDate(item.getApproachExitDate());
+			putBoxItem.setPolPreAppearanceDate(item.getApproachExitDate());
+		}else if ("6".equals(type)){
+			putBoxItem.setPolCyId(item.getStationId());
+			putBoxItem.setPolCyCode(item.getStationCode());
+			putBoxItem.setPolCyCname(item.getStationCname());
+			putBoxItem.setPolCyEname(item.getPortEname());
+			putBoxItem.setPolReturnDate(item.getApproachExitDate());
+			putBoxItem.setUpdateUser(AuthUtil.getUserId());
+			putBoxItem.setUpdateUserName(AuthUtil.getUserName());
+			putBoxItem.setUpdateTime(new Date());
+			putBoxItem.setTemporaryMblno(putBoxItem.getHblno());
+
+			putBoxItem.setPodEmptyContainerReturnDate(null);
+			putBoxItem.setPodStationId(null);
+			putBoxItem.setPodStationCode(null);
+			putBoxItem.setPodStationCname(null);
+			putBoxItem.setPodStationEname(null);
+			putBoxItem.setEta(null);
+			putBoxItem.setCorpId(0L);
+			putBoxItem.setCorpName("");
+			putBoxItem.setMblno("");
+			putBoxItem.setHblno("");
+			putBoxItem.setShipNameId(0L);
+			putBoxItem.setShipCname("");
+			putBoxItem.setShipEname("");
+			putBoxItem.setShipCode("");
+			putBoxItem.setVoyage("");
+			putBoxItem.setPodCyAddress("");
+			putBoxItem.setPodCyContact("");
+			putBoxItem.setPodCyEmail("");
+			putBoxItem.setPodCyTel("");
+			putBoxItem.setEtd(null);
+			putBoxItem.setPolFreeBoxUseDays(0);
+			putBoxItem.setPolStationEmptyContainerExitDate(null);
+			putBoxItem.setPolReturnDate(null);
+			putBoxItem.setPolOverdueBoxUseDays(0);
+			putBoxItem.setPodFreeBoxUseDays(0);
+			putBoxItem.setPodBoxUseDays(0);
+			putBoxItem.setAgentName("");
+			putBoxItem.setActualEtd(null);
+			putBoxItem.setActualEta(null);
+		}
+		putBoxItem.setBoxStatus(item.getBoxStatus());
+		putBoxItem.setStatus(status);
+		putBoxItem.setBoxDynamics(boxDynamics);
+		putBoxItem.setTemporaryId(item.getTemporaryId());
+		return putBoxItem;
+	}
+
+	/**
+	 * OW箱单据箱明细数据处理
+	 *
+	 * @param tradingBoxItem   箱明细数据
+	 * @param item             进出场记录数据
+	 * @param tradingBox       OW箱单据
+	 * @param whetherExistence 提单号对应海运单据是否存在
+	 * @param bills            海运单据数据
+	 * @param boxDynamics      箱动态
+	 * @param status           箱状态
+	 * @param type             1=进场,2=调拨进场,3=出场,4=调箱出场,5=客户还箱,6=无货返空,7=退租出场,8=OW放箱出场
+	 */
+	public static TradingBoxItem tradingBoxItemDataHandle(TradingBoxItem tradingBoxItem, BoxDynamicsRecordItems item, TradingBox tradingBox,
+														  Boolean whetherExistence, Bills bills, String boxDynamics, String status, String type) {
+		if ("3".equals(type)) {
+			tradingBoxItem.setUpdateUser(AuthUtil.getUserId());
+			tradingBoxItem.setUpdateUserName(AuthUtil.getUserName());
+			tradingBoxItem.setUpdateTime(new Date());
+			//OW(拿)单据目的港是否单一港口  是 明细目的港场站自动赋值主表
+			if (ObjectUtils.isNotNull(tradingBox.getPodId()) && !tradingBox.getPodId().contains(",")) {
+				tradingBoxItem.setPodStationId(tradingBox.getPodStationId());
+				tradingBoxItem.setPodStationCode(tradingBox.getPodStationCode());
+				tradingBoxItem.setPodStationCname(tradingBox.getPodStationCname());
+				tradingBoxItem.setPodStationEname(tradingBox.getPodStationEname());
+				tradingBoxItem.setPodCyAddress(tradingBox.getPodCyAddress());
+				tradingBoxItem.setPodCyContact(tradingBox.getPodCyContact());
+				tradingBoxItem.setPodCyEmail(tradingBox.getPodCyEmail());
+				tradingBoxItem.setPodCyTel(tradingBox.getPodCyTel());
+			}
+			tradingBoxItem.setPid(tradingBox.getId());
+			if (ObjectUtils.isNull(tradingBoxItem.getPolPickUpDate())) {
+				tradingBoxItem.setRentEndDate(item.getApproachExitDate());
+				tradingBoxItem.setPolPickUpDate(item.getApproachExitDate());
+				tradingBoxItem.setPolPreAppearanceDate(item.getApproachExitDate());
+			}
+			tradingBoxItem.setPolStationEmptyContainerExitDate(item.getApproachExitDate());
+			//海运出口信息赋值
+			if (whetherExistence && bills != null) {
+				tradingBoxItem.setAgentName(bills.getForeignAgencyCnName());
+				tradingBoxItem.setActualEtd(bills.getActualEtd());
+				tradingBoxItem.setMblno(bills.getMblno());
+				tradingBoxItem.setCorpId(bills.getCorpId());
+				tradingBoxItem.setCorpName(bills.getCorpCnName());
+				tradingBoxItem.setVoyage(bills.getVoyageNo());
+				tradingBoxItem.setShipNameId(bills.getVesselId());
+				tradingBoxItem.setShipCname(bills.getVesselCnName());
+				tradingBoxItem.setShipEname(bills.getVesselEnName());
+				tradingBoxItem.setPolFreeBoxUseDays(bills.getPolFreeBoxUseDays());
+				tradingBoxItem.setEtd(bills.getEtd());
+				tradingBoxItem.setPolFreeBoxUseDays(bills.getPolFreeBoxUseDays());
+			}
+		} else if ("4".equals(type)) {
+			if (tradingBoxItem != null) {
+				tradingBoxItem.setUpdateUser(AuthUtil.getUserId());
+				tradingBoxItem.setUpdateUserName(AuthUtil.getUserName());
+				tradingBoxItem.setUpdateTime(new Date());
+			} else {
+				tradingBoxItem = new TradingBoxItem();
+				tradingBoxItem.setBoxBelongsTo("SOC");
+				if ("OW-N".equals(tradingBox.getType())) {
+					tradingBoxItem.setBoxCategory("OW(拿)");
+				} else if ("DL".equals(tradingBox.getType())) {
+					tradingBoxItem.setBoxCategory("代理箱");
+				} else if ("ZR".equals(tradingBox.getType())) {
+					tradingBoxItem.setBoxCategory("租箱");
+				}
+				tradingBoxItem.setBoxCondition("新");
+				tradingBoxItem.setContainerNumber(item.getContainerNumber());
+				tradingBoxItem.setCode(item.getBoxCode());
+				tradingBoxItem.setBoxType(item.getBoxType());
+				tradingBoxItem.setActivationDate(tradingBox.getActivationDate());
+				tradingBoxItem.setCreateUser(AuthUtil.getUserId());
+				tradingBoxItem.setCreateUserName(AuthUtil.getUserName());
+				tradingBoxItem.setCreateTime(new Date());
+				tradingBoxItem.setPid(tradingBox.getId());
+			}
+			if (ObjectUtils.isNotNull(item.getApproachExitDate())) {
+				tradingBoxItem.setPolStationEmptyContainerExitDate(item.getApproachExitDate());
+			} else {
+				tradingBoxItem.setPolStationEmptyContainerExitDate(new Date());
+			}
+		} else if ("7".equals(type)) {
+			if (tradingBoxItem != null) {
+				tradingBoxItem.setUpdateUser(AuthUtil.getUserId());
+				tradingBoxItem.setUpdateUserName(AuthUtil.getUserName());
+				tradingBoxItem.setUpdateTime(new Date());
+			} else {
+				tradingBoxItem = new TradingBoxItem();
+				tradingBoxItem.setBoxBelongsTo("SOC");
+				tradingBoxItem.setBoxCondition("新");
+				tradingBoxItem.setContainerNumber(item.getContainerNumber());
+				tradingBoxItem.setCode(item.getBoxCode());
+				tradingBoxItem.setBoxType(item.getBoxType());
+				tradingBoxItem.setTenantId(item.getTenantId());
+				tradingBoxItem.setCreateUser(AuthUtil.getUserId());
+				tradingBoxItem.setCreateUserName(AuthUtil.getUserName());
+				tradingBoxItem.setCreateTime(new Date());
+				tradingBoxItem.setPid(tradingBox.getId());
+			}
+			if (ObjectUtils.isNotNull(item.getApproachExitDate())) {
+				tradingBoxItem.setRentingOutDate(item.getApproachExitDate());
+			} else {
+				tradingBoxItem.setRentingOutDate(new Date());
+			}
+		} else if ("1".equals(type)) {
+			if (tradingBoxItem != null) {
+				tradingBoxItem.setUpdateUser(AuthUtil.getUserId());
+				tradingBoxItem.setUpdateUserName(AuthUtil.getUserName());
+				tradingBoxItem.setUpdateTime(new Date());
+
+				tradingBoxItem.setPodReturnDate(null);
+				tradingBoxItem.setEtd(null);
+				tradingBoxItem.setPolFreeBoxUseDays(0);
+				tradingBoxItem.setPolOverdueBoxUseDays(0);
+				tradingBoxItem.setEta(null);
+				tradingBoxItem.setPodEmptyContainerReturnDate(null);
+				tradingBoxItem.setPodStationId(0L);
+				tradingBoxItem.setPodStationCode("");
+				tradingBoxItem.setPodStationCname("");
+				tradingBoxItem.setPodStationEname("");
+				tradingBoxItem.setPodFreeBoxUseDays(0);
+				tradingBoxItem.setPodBoxUseDays(0);
+				tradingBoxItem.setAgentName("");
+				tradingBoxItem.setCorpId(0L);
+				tradingBoxItem.setCorpName("");
+				tradingBoxItem.setMblno("");
+				tradingBoxItem.setHblno("");
+				tradingBoxItem.setShipNameId(0L);
+				tradingBoxItem.setShipCname("");
+				tradingBoxItem.setShipEname("");
+				tradingBoxItem.setShipCode("");
+				tradingBoxItem.setVoyage("");
+				tradingBoxItem.setPodCyAddress("");
+				tradingBoxItem.setPodCyContact("");
+				tradingBoxItem.setPodCyEmail("");
+				tradingBoxItem.setPodCyTel("");
+				tradingBoxItem.setActualEtd(null);
+				tradingBoxItem.setActualEta(null);
+			} else {
+				tradingBoxItem = new TradingBoxItem();
+				tradingBoxItem.setBoxBelongsTo("SOC");
+				if ("OW-N".equals(tradingBox.getType())) {
+					tradingBoxItem.setBoxCategory("OW(拿)");
+				} else if ("DL".equals(tradingBox.getType())) {
+					tradingBoxItem.setBoxCategory("代理箱");
+				} else if ("ZR".equals(tradingBox.getType())) {
+					tradingBoxItem.setBoxCategory("租箱");
+				}
+				tradingBoxItem.setBoxCondition("新");
+				tradingBoxItem.setBoxStatus(item.getBoxStatus());
+				tradingBoxItem.setContainerNumber(item.getContainerNumber());
+				tradingBoxItem.setCode(item.getBoxCode());
+				tradingBoxItem.setBoxType(item.getBoxType());
+				tradingBoxItem.setActivationDate(tradingBox.getActivationDate());
+				tradingBoxItem.setCreateUser(AuthUtil.getUserId());
+				tradingBoxItem.setCreateUserName(AuthUtil.getUserName());
+				tradingBoxItem.setCreateTime(new Date());
+				tradingBoxItem.setPid(tradingBox.getId());
+			}
+			if (ObjectUtils.isNotNull(item.getApproachExitDate())) {
+				tradingBoxItem.setRentEndDate(item.getApproachExitDate());
+				tradingBoxItem.setPolPickUpDate(item.getApproachExitDate());
+				tradingBoxItem.setPolPreAppearanceDate(item.getApproachExitDate());
+			} else {
+				tradingBoxItem.setRentEndDate(new Date());
+				tradingBoxItem.setPolPickUpDate(new Date());
+				tradingBoxItem.setPolPreAppearanceDate(new Date());
+			}
+		} else if ("5".equals(type)) {
+			tradingBoxItem.setPid(tradingBox.getId());
+			tradingBoxItem.setPodEmptyContainerReturnDate(item.getApproachExitDate());
+			tradingBoxItem.setPodStationId(item.getStationId());
+			tradingBoxItem.setPodStationCode(item.getStationCname());
+			tradingBoxItem.setPodStationCname(item.getStationEname());
+			tradingBoxItem.setPodStationEname(item.getStationCode());
+			tradingBoxItem.setUpdateUser(AuthUtil.getUserId());
+			tradingBoxItem.setUpdateUserName(AuthUtil.getUserName());
+			tradingBoxItem.setUpdateTime(new Date());
+			if (bills != null) {
+				tradingBoxItem.setPodFreeBoxUseDays(bills.getPodFreeBoxUseDays());
+				tradingBoxItem.setEta(bills.getEta());
+				tradingBoxItem.setActualEta(bills.getActualEta());
+			}
+			if (ObjectUtils.isNotNull(tradingBoxItem.getPolStationEmptyContainerExitDate()) &&
+				ObjectUtils.isNotNull(tradingBoxItem.getPodEmptyContainerReturnDate())) {
+				LocalDateTime ldt2 = tradingBoxItem.getPolStationEmptyContainerExitDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+				LocalDateTime ldt1 = tradingBoxItem.getPodEmptyContainerReturnDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+				int overdueDays = (int) ChronoUnit.DAYS.between(ldt2, ldt1);
+				tradingBoxItem.setPodBoxUseDays(Integer.parseInt(overdueDays + ""));
+			}
+		}else if ("2".equals(type)){
+			if (tradingBoxItem != null) {
+				tradingBoxItem.setUpdateUser(AuthUtil.getUserId());
+				tradingBoxItem.setUpdateUserName(AuthUtil.getUserName());
+				tradingBoxItem.setUpdateTime(new Date());
+			} else {
+				tradingBoxItem = new TradingBoxItem();
+				tradingBoxItem.setBoxBelongsTo("SOC");
+				if ("OW-N".equals(tradingBox.getType())) {
+					tradingBoxItem.setBoxCategory("OW(拿)");
+				} else if ("DL".equals(tradingBox.getType())) {
+					tradingBoxItem.setBoxCategory("代理箱");
+				} else if ("ZR".equals(tradingBox.getType())) {
+					tradingBoxItem.setBoxCategory("租箱");
+				}
+				tradingBoxItem.setBoxSource(tradingBox.getBoxClass());
+				tradingBoxItem.setBoxCondition("新");
+				tradingBoxItem.setBoxStatus(item.getBoxStatus());
+				tradingBoxItem.setContainerNumber(item.getContainerNumber());
+				tradingBoxItem.setCode(item.getBoxCode());
+				tradingBoxItem.setBoxType(item.getBoxType());
+				tradingBoxItem.setActivationDate(tradingBox.getActivationDate());
+				tradingBoxItem.setCreateUser(AuthUtil.getUserId());
+				tradingBoxItem.setCreateUserName(AuthUtil.getUserName());
+				tradingBoxItem.setCreateTime(new Date());
+				tradingBoxItem.setPid(tradingBox.getId());
+			}
+			if (ObjectUtils.isNotNull(item.getApproachExitDate())) {
+				tradingBoxItem.setRentEndDate(item.getApproachExitDate());
+				tradingBoxItem.setPolPickUpDate(item.getApproachExitDate());
+				tradingBoxItem.setPolPreAppearanceDate(item.getApproachExitDate());
+			} else {
+				tradingBoxItem.setRentEndDate(new Date());
+				tradingBoxItem.setPolPickUpDate(new Date());
+				tradingBoxItem.setPolPreAppearanceDate(new Date());
+			}
+		}else if ("6".equals(type)){
+			tradingBoxItem.setUpdateUser(AuthUtil.getUserId());
+			tradingBoxItem.setUpdateUserName(AuthUtil.getUserName());
+			tradingBoxItem.setUpdateTime(new Date());
+			tradingBoxItem.setPolReturnDate(item.getApproachExitDate());
+
+			tradingBoxItem.setPodReturnDate(null);
+			tradingBoxItem.setEtd(null);
+			tradingBoxItem.setPolFreeBoxUseDays(0);
+			tradingBoxItem.setPolOverdueBoxUseDays(0);
+			tradingBoxItem.setEta(null);
+			tradingBoxItem.setPodEmptyContainerReturnDate(null);
+			tradingBoxItem.setPodStationId(0L);
+			tradingBoxItem.setPodStationCode("");
+			tradingBoxItem.setPodStationCname("");
+			tradingBoxItem.setPodStationEname("");
+			tradingBoxItem.setPodFreeBoxUseDays(0);
+			tradingBoxItem.setPodBoxUseDays(0);
+			tradingBoxItem.setAgentName("");
+			tradingBoxItem.setCorpId(0L);
+			tradingBoxItem.setCorpName("");
+			tradingBoxItem.setMblno("");
+			tradingBoxItem.setHblno("");
+			tradingBoxItem.setShipNameId(0L);
+			tradingBoxItem.setShipCname("");
+			tradingBoxItem.setShipEname("");
+			tradingBoxItem.setShipCode("");
+			tradingBoxItem.setVoyage("");
+			tradingBoxItem.setPodCyAddress("");
+			tradingBoxItem.setPodCyContact("");
+			tradingBoxItem.setPodCyEmail("");
+			tradingBoxItem.setPodCyTel("");
+			tradingBoxItem.setActualEtd(null);
+			tradingBoxItem.setActualEta(null);
+			tradingBoxItem.setTemporaryId(item.getTemporaryId());
+		}
+		tradingBoxItem.setHblno(item.getHblno());
+		tradingBoxItem.setBoxDynamics(boxDynamics);
+		tradingBoxItem.setBoxStatus(item.getBoxStatus());
+		tradingBoxItem.setPortId(item.getPortId());
+		tradingBoxItem.setPortCode(item.getPortCode());
+		tradingBoxItem.setPortCname(item.getPortCname());
+		tradingBoxItem.setPortEname(item.getPortEname());
+		tradingBoxItem.setStationId(item.getStationId());
+		tradingBoxItem.setStationCode(item.getStationCode());
+		tradingBoxItem.setStationCname(item.getStationCname());
+		tradingBoxItem.setStationEname(item.getStationEname());
+		tradingBoxItem.setPolCyId(item.getStationId());
+		tradingBoxItem.setPolCyCode(item.getStationCode());
+		tradingBoxItem.setPolCyCname(item.getStationCname());
+		tradingBoxItem.setPolCyEname(item.getStationEname());
+		tradingBoxItem.setStatus(status);
+		tradingBoxItem.setBoxEastId(tradingBox.getPurchaseCompanyId());
+		tradingBoxItem.setBoxEastName(tradingBox.getPurchaseCompanyName());
+		tradingBoxItem.setTemporaryId(item.getTemporaryId());
+		return tradingBoxItem;
+	}
+
+
+}

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

@@ -170,7 +170,7 @@ public class ExchangeRateUtils {
 				}
 			}
 			//获取箱管等费用
-			List<FeeCenter> feeCenterListXG = feeCenterList.stream().filter(e -> "BUY,OW-F,OW-N,XGDX,XGFY".contains(e.getBusinessType())).collect(Collectors.toList());
+			List<FeeCenter> feeCenterListXG = feeCenterList.stream().filter(e -> "BUY,SELL,ZR,ZC,DL,OW-N,OW-F,XGFY,XGDX,CCSQ,DXCB,OW-HY,TZ".contains(e.getBusinessType())).collect(Collectors.toList());
 			if (!feeCenterListXG.isEmpty()) {
 				List<Long> idList = feeCenterListXG.stream().map(FeeCenter::getId).collect(Collectors.toList());
 				List<Long> pidList = feeCenterListXG.stream().map(FeeCenter::getPid).collect(Collectors.toList());
@@ -189,7 +189,7 @@ public class ExchangeRateUtils {
 				List<TradingBox> tradingBoxList = tradingBoxMapper.selectList(new LambdaQueryWrapper<TradingBox>()
 					.eq(TradingBox::getTenantId, AuthUtil.getTenantId())
 					.eq(TradingBox::getIsDeleted, 0)
-					.apply("find_in_set(type,'OW-N,OW-F,XGFY')")
+					.apply("find_in_set(type,'BUY,SELL,ZR,ZC,DL,OW-N,OW-F,XGFY,XGDX,CCSQ,DXCB,OW-HY,TZ')")
 					.in(TradingBox::getId, pidList));
 				if (!tradingBoxList.isEmpty()) {
 					for (TradingBox item : tradingBoxList) {

+ 11 - 1
blade-service/blade-los/src/main/java/org/springblade/los/box/controller/ArchivesTrajectoryController.java

@@ -79,7 +79,6 @@ public class ArchivesTrajectoryController extends BladeController {
 				.like(ArchivesTrajectory::getPortEname, archivesTrajectory.getPortCname()).or().like(ArchivesTrajectory::getPortCode, archivesTrajectory.getPortCname()))
 			.like(ObjectUtils.isNotNull(archivesTrajectory.getPortId()), ArchivesTrajectory::getPortId, archivesTrajectory.getPortId())
 			.like(ObjectUtils.isNotNull(archivesTrajectory.getStationCname()), ArchivesTrajectory::getStationCname, archivesTrajectory.getStationCname())
-			.like(ObjectUtils.isNotNull(archivesTrajectory.getBoxDynamics()), ArchivesTrajectory::getBoxDynamics, archivesTrajectory.getBoxDynamics())
 			.like(ObjectUtils.isNotNull(archivesTrajectory.getContainerNumber()), ArchivesTrajectory::getContainerNumber, archivesTrajectory.getContainerNumber())
 			.eq(ObjectUtils.isNotNull(archivesTrajectory.getBoxCategory()), ArchivesTrajectory::getBoxCategory, archivesTrajectory.getBoxCategory())
 			.like(ObjectUtils.isNotNull(archivesTrajectory.getMblno()), ArchivesTrajectory::getMblno, archivesTrajectory.getMblno())
@@ -90,6 +89,17 @@ public class ArchivesTrajectoryController extends BladeController {
 			.eq(ObjectUtils.isNotNull(archivesTrajectory.getTrajectoryStatus()), ArchivesTrajectory::getTrajectoryStatus, archivesTrajectory.getTrajectoryStatus())
 			.eq(ObjectUtils.isNotNull(archivesTrajectory.getBoxStatus()), ArchivesTrajectory::getBoxStatus, archivesTrajectory.getBoxStatus())
 			.eq(ObjectUtils.isNotNull(archivesTrajectory.getCorpId()), ArchivesTrajectory::getCorpId, archivesTrajectory.getCorpId());
+//		lambdaQueryWrapper.like(ObjectUtils.isNotNull(archivesTrajectory.getBoxDynamics()), ArchivesTrajectory::getBoxDynamics, archivesTrajectory.getBoxDynamics());
+		if (ObjectUtils.isNotNull(archivesTrajectory.getBoxDynamics())){
+			if ("进场".equals(archivesTrajectory.getBoxDynamics())){
+				lambdaQueryWrapper.apply("find_in_set(box_dynamics,'客户还箱,场内退租进场,无货返空,调拨新箱,驳空箱,新箱,直接退租进场,直接调运进场,起租箱进场,场内起租进场,退租箱进场')");
+			}else if ("出场".equals(archivesTrajectory.getBoxDynamics())){
+				lambdaQueryWrapper.apply("find_in_set(box_dynamics,'内点摆箱,外点备箱,空箱集港,退租出场,起租箱出场,场内起租出场,新箱出场,直接调运出场,直接退租出场,场内退租出场')");
+			}else{
+				lambdaQueryWrapper.apply("find_in_set(box_dynamics,'更改放箱号,箱档案-更改箱状态,海运出口-拆单')");
+			}
+		}
+
 		if (archivesTrajectory.getNewDateList() != null && archivesTrajectory.getNewDateList().size() > 1) {//日期
 			lambdaQueryWrapper.ge(ArchivesTrajectory::getNewDate, archivesTrajectory.getNewDateList().get(0));
 			lambdaQueryWrapper.le(ArchivesTrajectory::getNewDate, archivesTrajectory.getNewDateList().get(1));

+ 48 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/dynamics/service/impl/BoxDynamicsRecordItemsServiceImpl.java

@@ -18,6 +18,7 @@ package org.springblade.los.box.dynamics.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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;
@@ -25,12 +26,16 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.los.Util.GlobalOperationLogUtils;
 import org.springblade.los.Util.OperatorType;
+import org.springblade.los.box.dynamics.entity.BoxDynamicsRecord;
 import org.springblade.los.box.dynamics.entity.BoxDynamicsRecordItems;
 import org.springblade.los.box.dynamics.mapper.BoxDynamicsRecordItemsMapper;
+import org.springblade.los.box.dynamics.mapper.BoxDynamicsRecordMapper;
 import org.springblade.los.box.dynamics.service.IBoxDynamicsRecordItemsService;
 import org.springblade.los.box.dynamics.vo.BoxDynamicsRecordItemsVO;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -46,6 +51,8 @@ public class BoxDynamicsRecordItemsServiceImpl extends ServiceImpl<BoxDynamicsRe
 
 	private final GlobalOperationLogUtils logUtils;
 
+	private final BoxDynamicsRecordMapper boxDynamicsRecordMapper;
+
 	@Override
 	public IPage<BoxDynamicsRecordItemsVO> selectBoxDynamicsRecordItemsPage(IPage<BoxDynamicsRecordItemsVO> page, BoxDynamicsRecordItemsVO boxDynamicsRecordItems) {
 		return page.setRecords(baseMapper.selectBoxDynamicsRecordItemsPage(page, boxDynamicsRecordItems));
@@ -102,6 +109,47 @@ public class BoxDynamicsRecordItemsServiceImpl extends ServiceImpl<BoxDynamicsRe
 				operatorContent = OperatorType.TZ;
 			}
 			logUtils.saveOperationLogBatch(OperatorType.DATA_DELETION, operatorContent, ids);
+			BoxDynamicsRecord boxDynamicsRecord = boxDynamicsRecordMapper.selectById(itemsList.get(0).getId());
+			if (ObjectUtils.isNotNull(boxDynamicsRecord.getBoxCode())) {
+				List<String> boxCode = itemsList.stream().map(BoxDynamicsRecordItems::getBoxCode).distinct().collect(Collectors.toList());
+				List<String> arrList = new ArrayList<>();
+				for (String item : boxDynamicsRecord.getBoxCode().split(",")) {
+					if (!boxCode.contains(item)) {
+						arrList.add(item);
+					}
+				}
+				if (!arrList.isEmpty()) {
+					boxDynamicsRecord.setBoxCode(String.join(",", arrList));
+				}
+			}
+			if (ObjectUtils.isNotNull(boxDynamicsRecord.getContainerNumber())) {
+				List<String> boxCode = itemsList.stream().map(BoxDynamicsRecordItems::getContainerNumber).distinct().collect(Collectors.toList());
+				List<String> arrList = new ArrayList<>();
+				for (String item : boxDynamicsRecord.getContainerNumber().split(",")) {
+					if (!boxCode.contains(item)) {
+						arrList.add(item);
+					}
+				}
+				if (!arrList.isEmpty()) {
+					boxDynamicsRecord.setContainerNumber(String.join(",", arrList));
+				}
+			}
+			if (ObjectUtils.isNotNull(boxDynamicsRecord.getBillNo())) {
+				List<String> boxCode = itemsList.stream().map(BoxDynamicsRecordItems::getHblno).distinct().collect(Collectors.toList());
+				List<String> arrList = new ArrayList<>();
+				for (String item : boxDynamicsRecord.getBillNo().split(",")) {
+					if (!boxCode.contains(item)) {
+						arrList.add(item);
+					}
+				}
+				if (!arrList.isEmpty()) {
+					boxDynamicsRecord.setBillNo(String.join(",", arrList));
+				}
+			}
+			boxDynamicsRecord.setUpdateTime(new Date());
+			boxDynamicsRecord.setUpdateUser(AuthUtil.getUserId());
+			boxDynamicsRecord.setUpdateUserName(AuthUtil.getUserName());
+			boxDynamicsRecordMapper.updateById(boxDynamicsRecord);
 		}
 		this.removeByIds(Func.toLongList(ids));
 		return R.success("操作成功");

Разлика између датотеке није приказан због своје велике величине
+ 63 - 787
blade-service/blade-los/src/main/java/org/springblade/los/box/dynamics/service/impl/BoxDynamicsRecordServiceImpl.java


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

@@ -183,7 +183,7 @@ public class ExpenseApplicationServiceImpl extends ServiceImpl<ExpenseApplicatio
 			if (ObjectUtils.isNotNull(text.toString())) {
 				throw new RuntimeException(text.toString());
 			}
-			if ("BUY,ZR,DL,OW-N,OW-F,XGFY,XGDX,CCSQ".contains(expenseApplication.getSrcType())) {
+			if ("BUY,SELL,ZR,ZC,DL,OW-N,OW-F,XGFY,XGDX,CCSQ,DXCB,OW-HY,TZ".contains(expenseApplication.getSrcType())) {
 				TradingBox tradingBox = tradingBoxService.getById(expenseApplication.getSrcId());
 				if (tradingBox == null) {
 					throw new RuntimeException("未查到单据信息");
@@ -388,7 +388,7 @@ public class ExpenseApplicationServiceImpl extends ServiceImpl<ExpenseApplicatio
 		String status = sysClient.getParamService("expense.application");
 		if (status.equals("1")) {
 			List<ExpenseApplication> expenseApplicationList = new ArrayList<>();
-			if ("BUY,ZR,DL,OW-N,OW-F,XGFY,XGDX,CCSQ".contains(type)) {
+			if ("BUY,SELL,ZR,ZC,DL,OW-N,OW-F,XGFY,XGDX,CCSQ,DXCB,OW-HY,TZ".contains(type)) {
 				List<TradingBox> tradingBoxList = tradingBoxService.list(new LambdaQueryWrapper<TradingBox>()
 					.eq(TradingBox::getIsDeleted, 0)
 					.eq(TradingBox::getTenantId, AuthUtil.getTenantId())

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

@@ -245,9 +245,9 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 		} else if ("XGDX".equals(tradingBox.getType())) {
 			billNoFormat = "XGDX";
 			businessTypeCode = "XGDX";
-			if (tradingBox.getPolId().equals(Long.parseLong(tradingBox.getPodId()))) {
+			/*if (tradingBox.getPolId().equals(Long.parseLong(tradingBox.getPodId()))) {
 				throw new RuntimeException("调箱目的港与起运港相同,请修改目的港");
-			}
+			}*/
 			if (ObjectUtils.isNotNull(tradingBox.getPodStationId()) && tradingBox.getPodStationId().equals(tradingBox.getPolStationId())) {
 				throw new RuntimeException("调箱目的港场站与起运港场站相同,请修改目的港场站");
 			}
@@ -2876,6 +2876,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 		putBox.setPodCyTel(tradingBox.getPodCyTel());
 		putBox.setPodCyContact(tradingBox.getPodCyContact());
 		putBox.setPriorityLevel(tradingBox.getPriorityLevel());
+		putBox.setBoxTubeRemarks(tradingBox.getBoxTubeRemarks());
 		List<PutBoxItems> putBoxItemsList = putBoxItemsService.list(new LambdaQueryWrapper<PutBoxItems>()
 			.eq(PutBoxItems::getTenantId, AuthUtil.getTenantId())
 			.eq(PutBoxItems::getIsDeleted, 0)
@@ -2895,8 +2896,10 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 		if (tradingBox.getBoxNumber() < putBox.getOccupyNum()) {
 			throw new RuntimeException("箱量不能小于已占用数量");
 		}
-		putBox.setTotalNum(tradingBox.getBoxNumber());
-		putBox.setRemainingNum(putBox.getTotalNum() - putBox.getOccupyNum() - alreadyAppeared);
+		if (putBox.getRemainingNum() < tradingBox.getCancelNumber()) {
+			throw new RuntimeException("取消数量大于放箱号可用数量");
+		}
+		putBox.setRemainingNum(tradingBox.getBoxNumber() - putBox.getOccupyNum() - alreadyAppeared-tradingBox.getCancelNumber());
 		putBox.setVersion(putBox.getVersion() + 1);
 		putBoxService.updateById(putBox);
 		return R.data(tradingBox);

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

@@ -63,7 +63,6 @@ import java.util.List;
 public class ContainersController extends BladeController {
 
 	private final IContainersService containersService;
-	private final GlobalOperationLogUtils logUtils;
 
 	/**
 	 * 详情
@@ -228,21 +227,7 @@ public class ContainersController extends BladeController {
 	@ApiOperation(value = "删除", notes = "传入ids")
 	@RepeatSubmit
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-		logUtils.saveOperationLogBatch(OperatorType.DELETE, "配箱列表全部删除", ids);
-		List<Containers> containersList = containersService.list(new LambdaQueryWrapper<Containers>()
-			.eq(Containers::getTenantId, AuthUtil.getTenantId())
-			.eq(Containers::getIsDeleted, 0)
-			.in(Containers::getId, Func.toLongList(ids)));
-		for (Containers item : containersList) {
-			if (ObjectUtils.isNotNull(item.getContainerNumber())){
-				throw new RuntimeException("箱号:"+item.getCntrNo()+"已出场,删除失败");
-			}
-			item.setUpdateUserName(AuthUtil.getUserName());
-			item.setUpdateUser(AuthUtil.getUserId());
-			item.setUpdateTime(new Date());
-			item.setIsDeleted(1);
-		}
-		return R.status(containersService.updateBatchById(containersList));
+		return containersService.detele(ids);
 	}
 
 	/**

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

@@ -91,4 +91,6 @@ public interface IContainersService extends IService<Containers> {
 	IPage<UpdatePodStationExcel> updatePodStationPage(IPage<UpdatePodStationExcel> page, UpdatePodStationExcel excel);
 
 	List<UpdatePodStationExcel> updatePodStationList(UpdatePodStationExcel excel);
+
+	R detele(String ids);
 }

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

@@ -24,8 +24,11 @@ import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.los.Util.BoxNumUtils;
+import org.springblade.los.Util.GlobalOperationLogUtils;
+import org.springblade.los.Util.OperatorType;
 import org.springblade.los.business.sea.dto.WaitingBox;
 import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.business.sea.entity.Containers;
@@ -67,6 +70,9 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 
 	private final IContainersCommodityService containersCommodityService;
 
+	private final GlobalOperationLogUtils logUtils;
+
+
 	@Override
 	public IPage<ContainersVO> selectContainersPage(IPage<ContainersVO> page, ContainersVO containers) {
 		return page.setRecords(baseMapper.selectContainersPage(page, containers));
@@ -736,5 +742,34 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 		return baseMapper.updatePodStationList(excel);
 	}
 
+	@Override
+	public R detele(String ids) {
+		logUtils.saveOperationLogBatch(OperatorType.DELETE, "配箱列表全部删除", ids);
+		List<Containers> containersList = baseMapper.selectList(new LambdaQueryWrapper<Containers>()
+			.eq(Containers::getTenantId, AuthUtil.getTenantId())
+			.eq(Containers::getIsDeleted, 0)
+			.in(Containers::getId, Func.toLongList(ids)));
+		if (containersList.isEmpty()) {
+			throw new RuntimeException("未查到配箱信息");
+		}
+		Bills bills = billsMapper.selectById(containersList.get(0).getPid());
+		if (bills == null) {
+			throw new RuntimeException("未查到海运单据信息");
+		}
+		for (Containers item : containersList) {
+			if (!"MM".equals(bills.getBillType())) {
+				if (ObjectUtils.isNotNull(item.getContainerNumber())) {
+					throw new RuntimeException("箱号:" + item.getCntrNo() + "已出场,删除失败");
+				}
+			}
+			item.setUpdateUserName(AuthUtil.getUserName());
+			item.setUpdateUser(AuthUtil.getUserId());
+			item.setUpdateTime(new Date());
+			item.setIsDeleted(1);
+		}
+		this.removeByIds(containersList);
+		return R.success("操作成功");
+	}
+
 
 }

+ 32 - 24
blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java

@@ -2071,7 +2071,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 	}
 
 	private void updateFeeCenter(FeeCenterUpdateRecord feeCenterUpdateRecord, FeeCenter feeCenter) {
-		if (feeCenter != null){
+		if (feeCenter != null) {
 			feeCenterUpdateRecord.setStatus("3");
 			feeCenterUpdateRecord.setUpdateUser(AuthUtil.getUserId());
 			feeCenterUpdateRecord.setUpdateTime(new Date());
@@ -2086,10 +2086,10 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 			}
 			Bills bills = new Bills();
 			String exrateType;
-			BigDecimal amountProfit = new BigDecimal("0.00");
-			BigDecimal amountProfitUsd = new BigDecimal("0.00");
-			BigDecimal amountProfitLoc = new BigDecimal("0.00");
-			BigDecimal oceanFreightProfit = new BigDecimal("0.00");
+			BigDecimal amountProfit;
+			BigDecimal amountProfitUsd;
+			BigDecimal amountProfitLoc;
+			BigDecimal oceanFreightProfit;
 			BigDecimal amountDr = new BigDecimal("0.00");
 			BigDecimal amountDrUsd = new BigDecimal("0.00");
 			BigDecimal amountDrLoc = new BigDecimal("0.00");
@@ -2110,24 +2110,32 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 					.ne(FeeCenter::getId, feeCenter.getId())
 					.eq(FeeCenter::getPid, bills.getId()));
 				if (feeCenterList.isEmpty()) {
-					throw new RuntimeException("未查到费用明细");
-				}
-				amountDr = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())
-					&& !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountDrUsd = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())
-					&& !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountDrLoc = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && !e.getId().equals(feeCenter.getId()))
-					.map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountCr = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())
-					&& !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountCrUsd = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())
-					&& !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountCrLoc = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && !e.getId().equals(feeCenter.getId()))
-					.map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
-				oceanFreightDr = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && "HYF".equals(e.getFeeCode())
-					&& !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
-				oceanFreightCr = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && "HYF".equals(e.getFeeCode())
-					&& !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountDr = new BigDecimal("0.00");
+					amountDrUsd = new BigDecimal("0.00");
+					amountDrLoc = new BigDecimal("0.00");
+					amountCr = new BigDecimal("0.00");
+					amountCrUsd = new BigDecimal("0.00");
+					amountCrLoc = new BigDecimal("0.00");
+					oceanFreightDr = new BigDecimal("0.00");
+					oceanFreightCr = new BigDecimal("0.00");
+				} else {
+					amountDr = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())
+						&& !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountDrUsd = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())
+						&& !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountDrLoc = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && !e.getId().equals(feeCenter.getId()))
+						.map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountCr = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())
+						&& !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountCrUsd = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())
+						&& !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountCrLoc = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && !e.getId().equals(feeCenter.getId()))
+						.map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
+					oceanFreightDr = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && "HYF".equals(e.getFeeCode())
+						&& !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
+					oceanFreightCr = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && "HYF".equals(e.getFeeCode())
+						&& !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
+				}
 			} else {
 				exrateType = currencyUtils.standardCurrency(AuthUtil.getDeptId());
 			}
@@ -2240,7 +2248,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				bills.setAmountCrLoc(amountCrLoc);
 				bills.setAmountProfitLoc(amountProfitLoc);
 				billsMapper.updateById(bills);
-			} else if ("BUY,SELL,ZR,ZC,DL,OW-N,OW-F,XGFY,XGDX,CCSQ,DXCB,OW-HY".contains(feeCenter.getBusinessType())) {
+			} else if ("BUY,SELL,ZR,ZC,DL,OW-N,OW-F,XGFY,XGDX,CCSQ,DXCB,OW-HY,TZ".contains(feeCenter.getBusinessType())) {
 				TradingBox tradingBox = tradingBoxMapper.selectById(feeCenter.getPid());
 				if (tradingBox == null) {
 					throw new RuntimeException("未查到费用明细所在单据信息");

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

@@ -326,7 +326,7 @@ public class FeeCenterUpdateRecordServiceImpl extends ServiceImpl<FeeCenterUpdat
 				billDate = feeCenter.getBillDate();
 			}
 			branchId = bills.getBranchId();
-		} else if ("BUY,SELL,ZR,ZC,DL,OW-N,OW-F,XGFY,XGDX,CCSQ,DXCB,OW-HY".contains(feeCenter.getBusinessType())) {
+		} else if ("BUY,SELL,ZR,ZC,DL,OW-N,OW-F,XGFY,XGDX,CCSQ,DXCB,OW-HY,TZ".contains(feeCenter.getBusinessType())) {
 			TradingBox tradingBox = tradingBoxMapper.selectById(feeCenter.getPid());
 			if (tradingBox == null) {
 				throw new RuntimeException("未查到费用明细所在单据信息");

Неке датотеке нису приказане због велике количине промена