瀏覽代碼

1.出场未发送下货纸邮箱通知报错处理
2.配箱列表导入箱号封号接口逻辑修改
3.箱池动态查询接口修改
4.退租增加导出箱明细接口

纪新园 19 小時之前
父節點
當前提交
589619426b

+ 68 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/box/dto/ExportTradingBoxItemTZ.java

@@ -0,0 +1,68 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.box.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 买(卖)箱表实体类
+ *
+ * @author BladeX
+ * @since 2022-11-14
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class ExportTradingBoxItemTZ implements Serializable {
+
+
+	/**
+	 * 合约号
+	 */
+	@ExcelProperty(value = "合约号")
+	private String contractNo;
+	/**
+	 * 箱号
+	 */
+	@ExcelProperty(value = "箱号")
+	private String code;
+	/**
+	 * 箱型
+	 */
+	@ExcelProperty(value = "箱型")
+	private String boxType;
+	/**
+	 * 场站
+	 */
+	@ExcelProperty(value = "场站")
+	private String stationCname;
+	/**
+	 * 退租日期
+	 */
+	@ExcelProperty(value = "退租日期")
+	private Date rentingOutDate;
+
+
+}

+ 17 - 6
blade-service/blade-los/src/main/java/org/springblade/los/box/controller/TradingBoxController.java

@@ -35,8 +35,8 @@ import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.los.box.dto.ExportTradingBoxItemOut;
 import org.springblade.los.box.dto.ExportTradingBoxItemOutEn;
+import org.springblade.los.box.dto.ExportTradingBoxItemTZ;
 import org.springblade.los.box.dto.ExportTradingBoxOut;
-import org.springblade.los.box.entity.PutBox;
 import org.springblade.los.box.entity.TradingBox;
 import org.springblade.los.box.entity.TradingBoxItem;
 import org.springblade.los.box.service.ITradingBoxItemService;
@@ -127,10 +127,10 @@ public class TradingBoxController extends BladeController {
 			.eq(ObjectUtils.isNotNull(tradingBox.getDc()), TradingBox::getDc, tradingBox.getDc())
 		;
 		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
-		if (ObjectUtils.isNotNull(tradingBox.getEffectiveDate()) ) {
+		if (ObjectUtils.isNotNull(tradingBox.getEffectiveDate())) {
 			lambdaQueryWrapper.apply(ObjectUtils.isNotNull(tradingBox.getEffectiveDate()), "DATE_FORMAT(effective_date,'%Y-%m-%d') >= '" + formatter.format(tradingBox.getEffectiveDate()) + "'");
 		}
-		if ( ObjectUtils.isNotNull(tradingBox.getExpiryDate())) {
+		if (ObjectUtils.isNotNull(tradingBox.getExpiryDate())) {
 			lambdaQueryWrapper.apply(ObjectUtils.isNotNull(tradingBox.getExpiryDate()), "DATE_FORMAT(expiry_date,'%Y-%m-%d') >= '" + formatter.format(tradingBox.getExpiryDate()) + "'");
 		}
 		if (tradingBox.getEffectiveDateList() != null && tradingBox.getEffectiveDateList().size() > 1) {
@@ -170,7 +170,7 @@ public class TradingBoxController extends BladeController {
 				.le(TradingBox::getExpiryDate, calendar1.getTime())
 				.ne(TradingBox::getSuitcaseNum, 0);
 			lambdaQueryWrapper.apply("suitcase_num != box_number - cancel_number");
-		}else if ("5".equals(tradingBox.getWhetherDisplay())) {
+		} else if ("5".equals(tradingBox.getWhetherDisplay())) {
 			lambdaQueryWrapper.apply("suitcase_num = box_number - cancel_number");
 		}
 		lambdaQueryWrapper.orderByDesc(TradingBox::getCreateTime);
@@ -293,6 +293,7 @@ public class TradingBoxController extends BladeController {
 		);
 		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
 		List<ExportTradingBoxItemOut> outList = new ArrayList<>();
+		List<ExportTradingBoxItemTZ> tZList = new ArrayList<>();
 		List<ExportTradingBoxItemOutEn> outListEn = new ArrayList<>();
 		for (TradingBoxItem item : tradingBoxItemList) {
 			if ("OW-N,OW-F".contains(detail.getType())) {
@@ -325,6 +326,14 @@ public class TradingBoxController extends BladeController {
 				export.setMblno(item.getMblno());
 				export.setHblno(item.getHblno());
 				outListEn.add(export);
+			} else if ("TZ".contains(detail.getType())) {
+				ExportTradingBoxItemTZ itemTZ = new ExportTradingBoxItemTZ();
+				itemTZ.setContractNo(detail.getContractNo());
+				itemTZ.setCode(item.getCode());
+				itemTZ.setBoxType(item.getBoxType());
+				itemTZ.setStationCname(item.getStationCname());
+				itemTZ.setRentingOutDate(item.getRentingOutDate());
+				tZList.add(itemTZ);
 			} else {
 				ExportTradingBoxItemOut data = new ExportTradingBoxItemOut();
 				data.setBoxEastName(item.getBoxEastName());
@@ -340,6 +349,8 @@ public class TradingBoxController extends BladeController {
 		}
 		if ("OW-N,OW-F".contains(detail.getType())) {
 			ExcelUtil.export(response, "箱明细", "箱明细", outListEn, ExportTradingBoxItemOutEn.class);
+		} else if ("TZ".contains(detail.getType())) {
+			ExcelUtil.export(response, "退租箱明细", "退租箱明细", tZList, ExportTradingBoxItemTZ.class);
 		} else {
 			ExcelUtil.export(response, "箱明细", "箱明细", outList, ExportTradingBoxItemOut.class);
 		}
@@ -555,7 +566,7 @@ public class TradingBoxController extends BladeController {
 	 * 删除 配箱信息并同步修改状态数据
 	 */
 	@GetMapping("/removeById")
-	public R removeById( @RequestParam("ids") String ids) {
+	public R removeById(@RequestParam("ids") String ids) {
 		return tradingBoxService.deleteById(ids);
 	}
 
@@ -571,7 +582,7 @@ public class TradingBoxController extends BladeController {
 	 * 同步放箱号-箱明细信息
 	 */
 	@GetMapping("/synchronizationBoxInformation")
-	public R synchronizationBoxInformation( @RequestParam("id") Long id) {
+	public R synchronizationBoxInformation(@RequestParam("id") Long id) {
 		return tradingBoxService.synchronizationBoxInformation(id);
 	}
 

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

@@ -3001,7 +3001,7 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 									boolean whetherAppearStatus = false;
 									if (!containerNumberItemList.isEmpty()) {
 										SeaContainerNumberItem containerNumberItems = containerNumberItemList.stream()
-											.filter(e -> e.getSrcId().equals(item.getId())&& e.getPid().equals(billId))
+											.filter(e -> e.getSrcId().equals(item.getId()) && e.getPid().equals(billId))
 											.findFirst().orElse(null);
 										if (containerNumberItems != null) {
 											containerNumberItems.setOutNum(containerNumberItems.getOutNum() - Integer.parseInt(size + ""));
@@ -3745,9 +3745,13 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 								failureHandling(type, boxDynamicsRecord, "提单号:" + bills.getHblno() + "对应海运出口单据未生成配箱列表");
 								return false;
 							}
-							//未发送下货纸
-							if (!"1".equals(bills.getEdiStatus()) && intercept && "1".equals(sendDeliveryPaperMail)){
-								sendAnEmailUtils.sendAnEmail(bills,item.getBoxCode());
+							//未发送下货纸邮箱通知
+							if (!"1".equals(bills.getEdiStatus()) && intercept && "1".equals(sendDeliveryPaperMail)) {
+								try {
+									sendAnEmailUtils.sendAnEmail(bills, item.getBoxCode());
+								} catch (Exception e) {
+									System.err.println(e.getMessage());
+								}
 							}
 						} else {
 							//判断出场港口是否国内或越南港口,是提单号必须存在  否需提示但箱正常出场

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/box/mapper/PutBoxMapper.java

@@ -50,7 +50,7 @@ public interface PutBoxMapper extends BaseMapper<PutBox> {
 	List<BoxPoolPortDTO> listPort(IPage<BoxPoolPortDTO> page, @Param("data") BoxPoolDTO boxPoolDTO);
 
 	List<Map<String, Long>> selectBoxNumber(@Param("portId") Long portId, @Param("whetherLoseEfficacy") String whetherLoseEfficacy
-	,@Param("tenantId")String tenantId,@Param("busType")String busType,@Param("stationId")Long stationId);
+	,@Param("tenantId")String tenantId,@Param("busType")String busType,@Param("stationId")Long stationId,@Param("whetherExpired") String whetherExpired);
 
     List<RouteCostProfitExcel> getBoxNumber(@Param("data")RouteCostProfitExcel routeCost);
 

+ 3 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/mapper/PutBoxMapper.xml

@@ -292,6 +292,9 @@
         <if test="portId !=null and portId != ''">
             and lpb.pol_id like concat(concat('%', #{portId}),'%')
         </if>
+        <if test='whetherExpired != null and whetherExpired != ""'>
+            and lpb.effective_end_date &gt;= CURDATE()
+        </if>
         <if test="stationId !=null and stationId != ''">
             and lpb.pol_station_id = #{stationId}
         </if>

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

@@ -523,7 +523,7 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 		if (!boxPoolPortDTOList.isEmpty()) {
 			for (BoxPoolPortDTO item : boxPoolPortDTOList) {
 				List<Map<String, Long>> mapList = baseMapper.selectBoxNumber(item.getPortId(), boxPoolDTO.getWhetherLoseEfficacy(),
-					AuthUtil.getTenantId(), item.getBusType(), item.getStationId());
+					AuthUtil.getTenantId(), item.getBusType(), item.getStationId(),boxPoolDTO.getWhetherExpired());
 				long gP20Good = 0;
 				long gP40Good = 0;
 				long hG40Good = 0;
@@ -4884,7 +4884,7 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 		if (!boxPoolPortDTOList.isEmpty()) {
 			for (BoxPoolPortDTO item : boxPoolPortDTOList) {
 				List<Map<String, Long>> mapList = baseMapper.selectBoxNumber(item.getPortId(), boxPoolDTO.getWhetherLoseEfficacy(),
-					AuthUtil.getTenantId(), item.getBusType(), item.getStationId());
+					AuthUtil.getTenantId(), item.getBusType(), item.getStationId(),boxPoolDTO.getWhetherExpired());
 				long gP20Good = 0;
 				long gP40Good = 0;
 				long hG40Good = 0;

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

@@ -26,15 +26,13 @@ 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.BigDecimalUtils;
 import org.springblade.los.Util.BoxNumUtils;
 import org.springblade.los.Util.GlobalOperationLogUtils;
 import org.springblade.los.Util.OperatorType;
 import org.springblade.los.box.excel.ReturnContainerReminderExcel;
 import org.springblade.los.business.sea.dto.WaitingBox;
-import org.springblade.los.business.sea.entity.Bills;
-import org.springblade.los.business.sea.entity.Containers;
-import org.springblade.los.business.sea.entity.ContainersBills;
-import org.springblade.los.business.sea.entity.ContainersCommodity;
+import org.springblade.los.business.sea.entity.*;
 import org.springblade.los.business.sea.mapper.BillsMapper;
 import org.springblade.los.business.sea.mapper.ContainersMapper;
 import org.springblade.los.business.sea.service.IContainersBillsService;
@@ -482,6 +480,7 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 				}
 			}
 		}
+		String isOccupyNum = sysClient.getParamService("is.occupyNum");
 		List<Containers> list = baseMapper.selectList(new LambdaQueryWrapper<Containers>()
 			.eq(Containers::getTenantId, AuthUtil.getTenantId())
 			.eq(Containers::getIsDeleted, 0)
@@ -489,33 +488,70 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 		if (list.isEmpty()) {
 			throw new RuntimeException("未找到配箱信息");
 		}
-		int count;
-		if (list.size() >= excelList.size()) {
-			count = excelList.size();
-		} else {
-			count = list.size();
-		}
-		List<Containers> containersList = new ArrayList<>();
-		for (int i = 0; i < count; i++) {
-			BoxAndLeadSealNoExcel item = excelList.get(i);
-			Containers containers = list.get(i);
-			containers.setCntrTypeCode(item.getCntrTypeCode());
-			BoxNumUtils.containerNumberVerification(item.getCntrNo());
-			containers.setCntrNo(item.getCntrNo().toUpperCase());
-			containers.setSealNo(item.getSealNo());
-			containers.setMeasurement(ObjectUtils.isNotNull(item.getMeasurement()) ? item.getMeasurement() : new BigDecimal("0.00"));
-			containers.setQuantity(ObjectUtils.isNotNull(item.getQuantity()) ? item.getQuantity() : new BigDecimal("0.00"));
-			containers.setGrossWeight(ObjectUtils.isNotNull(item.getGrossWeight()) ? item.getGrossWeight() : new BigDecimal("0.00"));
-			containers.setTare(ObjectUtils.isNotNull(item.getTare()) ? item.getTare() : new BigDecimal("0.00"));
-			containers.setVgmWeight(containers.getGrossWeight().add(containers.getTare()));
-			containers.setHblno(item.getHblno());
-			containersList.add(containers);
-		}
-		if (!containersList.isEmpty()) {
-			this.updateBatchById(containersList);
-			return R.data(containersList);
+		List<String> cntrNoList = list.stream().map(Containers::getCntrNo).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+		if ("1".equals(isOccupyNum) && !cntrNoList.isEmpty()) {
+			List<Containers> containersList1 = new ArrayList<>();
+			StringBuilder text = new StringBuilder();
+			for (BoxAndLeadSealNoExcel item : excelList) {
+				if (!cntrNo.contains(item.getCntrNo())) {
+					text.append(item.getCntrNo()).append(",");
+				}
+			}
+			if (ObjectUtils.isNotNull(text.toString())) {
+				throw new RuntimeException("箱号:" + text + "未查到,请确认!");
+			}
+			for (Containers item : list) {
+				if (!excelList.isEmpty()) {
+					BoxAndLeadSealNoExcel containers = excelList.stream().filter(e -> e.getCntrNo().equals(item.getCntrNo()))
+						.findFirst().orElse(null);
+					if (containers != null) {
+						item.setSealNo(containers.getSealNo());
+						item.setCntrTypeCode(containers.getCntrTypeCode());
+						item.setTare(containers.getTare());
+						item.setVgmWeight(containers.getVgmWeight());
+						item.setQuantity(containers.getQuantity());
+						item.setGrossWeight(containers.getGrossWeight());
+						item.setMeasurement(containers.getMeasurement());
+						item.setUpdateUser(AuthUtil.getUserId());
+						item.setUpdateTime(new Date());
+						item.setUpdateUserName(AuthUtil.getUserName());
+						containersList1.add(item);
+					}
+				}
+			}
+			if (!containersList1.isEmpty()) {
+				this.updateBatchById(containersList1);
+			}
+			return R.data(containersList1);
 		} else {
-			return R.fail("导入失败,导入条数为零");
+			int count;
+			if (list.size() >= excelList.size()) {
+				count = excelList.size();
+			} else {
+				count = list.size();
+			}
+			List<Containers> containersList = new ArrayList<>();
+			for (int i = 0; i < count; i++) {
+				BoxAndLeadSealNoExcel item = excelList.get(i);
+				Containers containers = list.get(i);
+				containers.setCntrTypeCode(item.getCntrTypeCode());
+				BoxNumUtils.containerNumberVerification(item.getCntrNo());
+				containers.setCntrNo(item.getCntrNo().toUpperCase());
+				containers.setSealNo(item.getSealNo());
+				containers.setMeasurement(ObjectUtils.isNotNull(item.getMeasurement()) ? item.getMeasurement() : new BigDecimal("0.00"));
+				containers.setQuantity(ObjectUtils.isNotNull(item.getQuantity()) ? item.getQuantity() : new BigDecimal("0.00"));
+				containers.setGrossWeight(ObjectUtils.isNotNull(item.getGrossWeight()) ? item.getGrossWeight() : new BigDecimal("0.00"));
+				containers.setTare(ObjectUtils.isNotNull(item.getTare()) ? item.getTare() : new BigDecimal("0.00"));
+				containers.setVgmWeight(containers.getGrossWeight().add(containers.getTare()));
+				containers.setHblno(item.getHblno());
+				containersList.add(containers);
+			}
+			if (!containersList.isEmpty()) {
+				this.updateBatchById(containersList);
+				return R.data(containersList);
+			} else {
+				return R.fail("导入失败,导入条数为零");
+			}
 		}
 	}