diff --git a/blade-service-api/blade-transport-api/src/main/java/org/springblade/transport/pojo/entity/CommonCargo.java b/blade-service-api/blade-transport-api/src/main/java/org/springblade/transport/pojo/entity/CommonCargo.java index 1a7a3ce..63ff868 100644 --- a/blade-service-api/blade-transport-api/src/main/java/org/springblade/transport/pojo/entity/CommonCargo.java +++ b/blade-service-api/blade-transport-api/src/main/java/org/springblade/transport/pojo/entity/CommonCargo.java @@ -22,6 +22,8 @@ */ package org.springblade.transport.pojo.entity; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -76,6 +78,7 @@ public class CommonCargo extends TenantEntity { private String packageType; @Schema(description = "货值") + @TableField(updateStrategy = FieldStrategy.ALWAYS) private BigDecimal cargoValue; @Schema(description = "规格") diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/mapper/DriverMapper.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/mapper/DriverMapper.java index 850d9b9..7250752 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/mapper/DriverMapper.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/mapper/DriverMapper.java @@ -41,6 +41,21 @@ import java.util.List; */ public interface DriverMapper extends BaseMapper { + /** + * 按身份证号查询司机(包含逻辑删除记录,用于唯一性校验)。 + */ + Driver selectByIdCardNoIncludingDeleted(@Param("idCardNo") String idCardNo); + + /** + * 按主键查询司机(包含逻辑删除记录,用于提交前校验)。 + */ + Driver selectByIdIncludingDeleted(@Param("id") Long id); + + /** + * 恢复逻辑删除司机。 + */ + int restoreById(@Param("id") Long id); + /** * 自定义分页 * diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/mapper/DriverMapper.xml b/blade-service/blade-transport/src/main/java/org/springblade/transport/mapper/DriverMapper.xml index 737152f..93cf5d5 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/mapper/DriverMapper.xml +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/mapper/DriverMapper.xml @@ -90,6 +90,28 @@ remark + + + + + + UPDATE blade_transport_driver + SET is_deleted = 0 + WHERE id = #{id} + + ( ((driving_license_long_term IS NULL OR driving_license_long_term != 1) AND driving_license_end_date < #{driver.today}) diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CommonCargoServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CommonCargoServiceImpl.java index b76d98f..75b51b4 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CommonCargoServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CommonCargoServiceImpl.java @@ -43,6 +43,7 @@ import org.springblade.transport.wrapper.CommonCargoWrapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -115,6 +116,7 @@ public class CommonCargoServiceImpl extends BaseServiceImpl { CommonCargoExportExcel excel = new CommonCargoExportExcel(); BeanUtil.copyProperties(record, excel); + excel.setCargoValue(normalizeCargoValue(record.getCargoValue())); excel.setPackageBrand(String.join(" / ", List.of( Func.isEmpty(record.getPackageType()) ? "" : record.getPackageType(), Func.isEmpty(record.getBrand()) ? "" : record.getBrand() @@ -255,6 +257,7 @@ public class CommonCargoServiceImpl extends BaseServiceImpl imp public boolean submit(Driver driver) { prepare(driver); validate(driver); - checkUniqueIdCard(driver); + prepareSubmitTarget(driver); return saveOrUpdate(driver); } @@ -235,14 +234,33 @@ public class DriverServiceImpl extends BaseServiceImpl imp } } - private void checkUniqueIdCard(Driver driver) { - Long count = count(Wrappers.lambdaQuery() - .eq(Driver::getIsDeleted, 0) - .eq(Driver::getIdCardNo, driver.getIdCardNo()) - .ne(Func.isNotEmpty(driver.getId()), Driver::getId, driver.getId())); - if (count > 0) { + private void prepareSubmitTarget(Driver driver) { + Driver existingById = Func.isEmpty(driver.getId()) + ? null : baseMapper.selectByIdIncludingDeleted(driver.getId()); + if (Func.isNotEmpty(driver.getId()) && existingById == null) { + throw new ServiceException("司机不存在,不能提交"); + } + Driver existingByIdCard = baseMapper.selectByIdCardNoIncludingDeleted(driver.getIdCardNo()); + if (existingByIdCard == null) { + if (existingById != null && Objects.equals(existingById.getIsDeleted(), 1)) { + throw new ServiceException("司机不存在,不能提交"); + } + return; + } + boolean sameRecord = existingById != null + && Objects.equals(existingByIdCard.getId(), existingById.getId()); + if (!Objects.equals(existingByIdCard.getIsDeleted(), 1)) { + if (!sameRecord) { + throw new ServiceException("身份证号已存在"); + } + return; + } + if (!sameRecord && Func.isNotEmpty(driver.getId())) { throw new ServiceException("身份证号已存在"); } + baseMapper.restoreById(existingByIdCard.getId()); + driver.setId(existingByIdCard.getId()); + driver.setIsDeleted(0); } private void validateLength(String value, int maxLength, String message) { diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PreSettlementServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PreSettlementServiceImpl.java index 6f72064..ba740ad 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PreSettlementServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PreSettlementServiceImpl.java @@ -848,12 +848,14 @@ public class PreSettlementServiceImpl extends BaseServiceImpl feeItems = parseFeeItems(feeRow.getFeeItemsJson()); boolean containsFreight = feeItems.keySet().stream().anyMatch(this::isFreightFeeItem); if (!containsFreight) { - aggregates.merge(summaryKey("物流配送", "运输费"), money(feeRow.getFreightAmount()), + aggregates.merge( + summaryKey(feeTypeMap.getOrDefault("运输费", ""), "运输费"), + money(feeRow.getFreightAmount()), BigDecimal::add); } feeItems.forEach((feeItem, amount) -> aggregates.merge( summaryKey(feeTypeMap.getOrDefault(feeItem, - isFreightFeeItem(feeItem) ? "物流配送" : "其他费用"), feeItem), + ""), feeItem), money(amount), BigDecimal::add)); } summaryFeeMapper.delete(Wrappers.lambdaQuery() @@ -884,6 +886,7 @@ public class PreSettlementServiceImpl extends BaseServiceImpl requestRows) { if (requestRows == null) return; + Map generatedFeeTypeMap = contractFeeTypeMap(loadExisting(settlementId).getContractId()); Map> allowedManualFees = new LinkedHashMap<>(); if (requestRows.stream().anyMatch(row -> Integer.valueOf(1).equals(row.getManualFlag()))) { for (Map option : feeOptions()) { @@ -935,12 +938,14 @@ public class PreSettlementServiceImpl extends BaseServiceImpl !Integer.valueOf(1).equals(item.getManualFlag())) - .filter(item -> Objects.equals(item.getFeeType(), requestRow.getFeeType()) - && Objects.equals(item.getFeeItem(), requestRow.getFeeItem())) + .filter(item -> Objects.equals(item.getFeeType(), feeType) + && Objects.equals(item.getFeeItem(), feeItem)) .findFirst().orElse(null); } if (row == null || Integer.valueOf(1).equals(row.getManualFlag())) { diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/wrapper/CommonCargoWrapper.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/wrapper/CommonCargoWrapper.java index 8f148a6..c0841d3 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/wrapper/CommonCargoWrapper.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/wrapper/CommonCargoWrapper.java @@ -30,6 +30,7 @@ import org.springblade.system.cache.UserCache; import org.springblade.transport.pojo.entity.CommonCargo; import org.springblade.transport.pojo.vo.CommonCargoVO; +import java.math.BigDecimal; import java.util.Objects; /** @@ -46,6 +47,9 @@ public class CommonCargoWrapper extends BaseEntityWrapper