Parcourir la source

2024年4月25日17:40:14

纪新园 il y a 1 an
Parent
commit
0cf7a2e64d

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

@@ -27,18 +27,15 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.los.Util.IDeptUtils;
 import org.springblade.los.business.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.mapper.PreContainersMapper;
 import org.springblade.los.business.sea.service.IContainersBillsService;
 import org.springblade.los.business.sea.service.IContainersCommodityService;
 import org.springblade.los.business.sea.service.IContainersService;
 import org.springblade.los.business.sea.vo.ContainersVO;
 import org.springblade.los.excel.BoxAndLeadSealNoExcel;
-import org.springblade.system.entity.Dept;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -70,6 +67,8 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 
 	private final IContainersCommodityService containersCommodityService;
 
+	private final PreContainersMapper preContainersMapper;
+
 	@Override
 	public IPage<ContainersVO> selectContainersPage(IPage<ContainersVO> page, ContainersVO containers) {
 		return page.setRecords(baseMapper.selectContainersPage(page, containers));
@@ -373,11 +372,58 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 		if (sealNo.size() != excelList.size()) {
 			throw new RuntimeException("铅封号不允许重复");
 		}
-		List<String> ids = excelList.stream().map(BoxAndLeadSealNoExcel::getId).collect(Collectors.toList());
+		List<String> ids = excelList.stream().map(BoxAndLeadSealNoExcel::getId).distinct().collect(Collectors.toList());
 		List<Containers> list = baseMapper.selectList(new LambdaQueryWrapper<Containers>()
 			.eq(Containers::getTenantId, AuthUtil.getTenantId())
 			.eq(Containers::getIsDeleted, 0)
 			.in(Containers::getId, ids));
+		if (list.size() != excelList.size()){
+			throw new RuntimeException("导入数据与待配箱数据不一致,请重新下载模版");
+		}
+		List<Long> pid = list.stream().map(Containers::getPid).distinct().collect(Collectors.toList());
+		List<PreContainers> preContainersList = preContainersMapper.selectList(new LambdaQueryWrapper<PreContainers>()
+			.eq(PreContainers::getTenantId, AuthUtil.getTenantId())
+			.eq(PreContainers::getIsDeleted, 0)
+			.in(PreContainers::getId, pid)
+		);
+		if (preContainersList.isEmpty()){
+			throw new RuntimeException("未查到具体箱型数量数据信息");
+		}
+		BigDecimal quantity = new BigDecimal("0.00");
+		BigDecimal grossWeight = new BigDecimal("0.00");
+		BigDecimal netWeight = new BigDecimal("0.00");
+		BigDecimal measurement = new BigDecimal("0.00");
+		List<String> cntry = excelList.stream().map(BoxAndLeadSealNoExcel::getCntrTypeCode).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+		for (String item :cntry){
+			List<BoxAndLeadSealNoExcel> boxList =  excelList.stream().filter(e-> e.getCntrTypeCode().equals(item)).collect(Collectors.toList());
+			if (!boxList.isEmpty()){
+				PreContainers preContainersDetails = preContainersList.stream().filter(e-> e.getCntrTypeCode().equals(item)
+				&& e.getPid().equals(Long.parseLong(boxList.get(0).getId()))).findFirst().orElse(null);
+				BigDecimal quantity1 = boxList.stream().map(BoxAndLeadSealNoExcel::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add);
+				BigDecimal grossWeight1 = boxList.stream().map(BoxAndLeadSealNoExcel::getGrossWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add);
+				BigDecimal netWeight1 = boxList.stream().map(BoxAndLeadSealNoExcel::getNetWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add);
+				BigDecimal measurement1 = boxList.stream().map(BoxAndLeadSealNoExcel::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO,BigDecimal::add);
+				if (preContainersDetails != null){
+					preContainersDetails.setNumber(quantity1);
+					preContainersDetails.setMeasurement(grossWeight1);
+					preContainersDetails.setNetWeight(netWeight1);
+					preContainersDetails.setMeasurement(measurement1);
+					preContainersMapper.updateById(preContainersDetails);
+				}
+				quantity = quantity.add(quantity1);
+				grossWeight = grossWeight.add(grossWeight1);
+				netWeight = netWeight.add(netWeight1);
+				measurement = measurement.add(measurement1);
+			}
+		}
+		Bills bills = billsMapper.selectById(preContainersList.get(0).getPid());
+		if (bills != null){
+			bills.setQuantity(quantity);
+			bills.setMeasurement(grossWeight);
+			bills.setNetWeight(netWeight);
+			bills.setMeasurement(measurement);
+			billsMapper.updateById(bills);
+		}
 		List<Containers> containersList = new ArrayList<>();
 		String regex = "^[a-zA-Z0-9]+$";
 		Pattern pattern = Pattern.compile(regex);
@@ -392,6 +438,12 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 				}
 				containers.setCntrNo(item.getCntrNo().toUpperCase());
 				containers.setSealNo(item.getSealNo());
+				containers.setMeasurement(item.getMeasurement());
+				containers.setQuantity(item.getQuantity());
+				containers.setGrossWeight(item.getGrossWeight());
+				containers.setNetWeight(item.getNetWeight());
+				containers.setMarks(item.getMarks());
+				containers.setRemarks(item.getRemarks());
 				containersList.add(containers);
 			}
 		}

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

@@ -307,7 +307,6 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 				preContainers.setUpdateUser(AuthUtil.getUserId());
 				preContainers.setUpdateTime(new Date());
 				preContainers.setUpdateUserName(AuthUtil.getUserName());
-				this.saveOrUpdate(preContainers);
 			}
 			this.saveOrUpdate(preContainers);
 

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

@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.FileInputStream;
+import java.lang.reflect.Field;
 import java.math.BigDecimal;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -248,6 +249,21 @@ public class TemplateImportServiceImpl implements ITemplateImportService {
 		bills.setFeeCenterListD(new ArrayList<>());
 		bills.setFilesList(new ArrayList<>());
 		bills.setWaitingBoxList(new ArrayList<>());
+		//将字符串为null的赋默认值为""
+		Field[] fields = bills.getClass().getDeclaredFields();
+		for (Field field : fields) {
+			try {
+				field.setAccessible(true); // 使得私有属性也可以访问
+				if (field.getType() == String.class){
+					Object value = field.get(bills);
+					if (value == null) {
+						field.set(bills, "");
+					}
+				}
+			} catch (IllegalAccessException e) {
+				e.printStackTrace();
+			}
+		}
 		return R.data(bills);
 	}
 
@@ -343,6 +359,20 @@ public class TemplateImportServiceImpl implements ITemplateImportService {
 		bills.setFeeCenterListD(new ArrayList<>());
 		bills.setFilesList(new ArrayList<>());
 		bills.setWaitingBoxList(new ArrayList<>());
+		Field[] fields = bills.getClass().getDeclaredFields();
+		for (Field field : fields) {
+			try {
+				field.setAccessible(true); // 使得私有属性也可以访问
+				if (field.getType() == String.class){
+					Object value = field.get(bills);
+					if (value == null) {
+						field.set(bills, "");
+					}
+				}
+			} catch (IllegalAccessException e) {
+				e.printStackTrace();
+			}
+		}
 		return R.data(bills);
 	}
 
@@ -431,6 +461,20 @@ public class TemplateImportServiceImpl implements ITemplateImportService {
 		bills.setFeeCenterList(new ArrayList<>());
 		bills.setFilesList(new ArrayList<>());
 		bills.setWaitingBoxList(new ArrayList<>());
+		Field[] fields = bills.getClass().getDeclaredFields();
+		for (Field field : fields) {
+			try {
+				field.setAccessible(true); // 使得私有属性也可以访问
+				if (field.getType() == String.class){
+					Object value = field.get(bills);
+					if (value == null) {
+						field.set(bills, "");
+					}
+				}
+			} catch (IllegalAccessException e) {
+				e.printStackTrace();
+			}
+		}
 		return R.data(bills);
 	}
 

+ 40 - 1
blade-service/blade-los/src/main/java/org/springblade/los/excel/BoxAndLeadSealNoExcel.java

@@ -20,9 +20,11 @@ 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 io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 /**
  * 基础资料-集装箱箱型实体类
@@ -39,7 +41,7 @@ public class BoxAndLeadSealNoExcel implements Serializable {
 	/**
 	 * id
 	 */
-	@ExcelProperty(value = "id")
+	@ExcelProperty(value = "id(请勿删除,否则导入更新数据失败)")
 	private String id;
 
 	/**
@@ -60,5 +62,42 @@ public class BoxAndLeadSealNoExcel implements Serializable {
 	@ExcelProperty(value = "铅封号")
 	private String sealNo;
 
+	/**
+	 * 件数
+	 */
+	@ExcelProperty(value = "件数")
+	private BigDecimal quantity;
+	/**
+	 * 毛重 (KGM)
+	 */
+	@ExcelProperty(value = "毛重 (KGM)")
+	private BigDecimal grossWeight;
+	/**
+	 * 净重 (KGM)
+	 */
+	@ExcelProperty(value = "净重 (KGM)")
+	private BigDecimal netWeight;
+	/**
+	 * 体积 (CBM)
+	 */
+	@ExcelProperty(value = "体积 (CBM)")
+	private BigDecimal measurement;
+
+	/**
+	 * 唛头
+	 */
+	@ApiModelProperty(value = "MARKS")
+	private String marks;
+	/**
+	 * 备注
+	 */
+	@ExcelProperty(value = "备注")
+	private String remarks;
+	/**
+	 * VGM 称重方法,SM1, SM2
+	 */
+	@ExcelProperty(value = "VGM")
+	private String vgmMethod;
+
 
 }