fix bug
This commit is contained in:
@@ -161,6 +161,9 @@ public class MileageRecordController extends BladeController {
|
||||
if (Func.isNotEmpty(mileageRecord.getCreateDept())) {
|
||||
queryWrapper.eq(MileageRecord::getCreateDept, mileageRecord.getCreateDept());
|
||||
}
|
||||
if (Func.isNotEmpty(mileageRecord.getVehicleType())) {
|
||||
queryWrapper.eq(MileageRecord::getVehicleType, mileageRecord.getVehicleType());
|
||||
}
|
||||
if (Func.isNotEmpty(mileageRecord.getVehicleNo())) {
|
||||
queryWrapper.like(MileageRecord::getVehicleNo, mileageRecord.getVehicleNo());
|
||||
}
|
||||
|
||||
@@ -52,7 +52,10 @@ public class MileageRecordExcel implements Serializable {
|
||||
@ExcelIgnore
|
||||
private Long id;
|
||||
|
||||
@ExcelProperty("车牌号")
|
||||
@ExcelProperty("车船类型")
|
||||
private String vehicleType;
|
||||
|
||||
@ExcelProperty("车牌号/船号")
|
||||
private String vehicleNo;
|
||||
|
||||
@ExcelProperty("上月统计里程")
|
||||
@@ -67,6 +70,9 @@ public class MileageRecordExcel implements Serializable {
|
||||
@ExcelProperty("累计行驶里程")
|
||||
private BigDecimal totalMileage;
|
||||
|
||||
@ExcelProperty("里程单位")
|
||||
private String mileageUnit;
|
||||
|
||||
@ExcelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
|
||||
@@ -111,8 +111,8 @@
|
||||
code AS site_code,
|
||||
name AS address_name,
|
||||
CONCAT_WS('', country, city) AS region_name,
|
||||
NULL AS region_code,
|
||||
city AS detail_address,
|
||||
region_code,
|
||||
detail_address,
|
||||
longitude,
|
||||
latitude
|
||||
FROM blade_port_terminal
|
||||
@@ -155,8 +155,8 @@
|
||||
code AS site_code,
|
||||
name AS address_name,
|
||||
CONCAT_WS('', country, city) AS region_name,
|
||||
NULL AS region_code,
|
||||
city AS detail_address,
|
||||
region_code,
|
||||
detail_address,
|
||||
longitude,
|
||||
latitude
|
||||
FROM blade_port_terminal
|
||||
|
||||
@@ -12,11 +12,13 @@
|
||||
<result column="update_time" property="updateTime"/>
|
||||
<result column="status" property="status"/>
|
||||
<result column="is_deleted" property="isDeleted"/>
|
||||
<result column="vehicle_type" property="vehicleType"/>
|
||||
<result column="vehicle_no" property="vehicleNo"/>
|
||||
<result column="previous_month_mileage" property="previousMonthMileage"/>
|
||||
<result column="current_month_mileage" property="currentMonthMileage"/>
|
||||
<result column="monthly_mileage" property="monthlyMileage"/>
|
||||
<result column="total_mileage" property="totalMileage"/>
|
||||
<result column="mileage_unit" property="mileageUnit"/>
|
||||
<result column="attachments" property="attachments"/>
|
||||
<result column="remark" property="remark"/>
|
||||
</resultMap>
|
||||
@@ -32,11 +34,13 @@
|
||||
update_time,
|
||||
status,
|
||||
is_deleted,
|
||||
vehicle_type,
|
||||
vehicle_no,
|
||||
CASE WHEN previous_month_mileage < 0 THEN 0 ELSE previous_month_mileage END AS previous_month_mileage,
|
||||
CASE WHEN current_month_mileage < 0 THEN 0 ELSE current_month_mileage END AS current_month_mileage,
|
||||
CASE WHEN monthly_mileage < 0 THEN 0 ELSE monthly_mileage END AS monthly_mileage,
|
||||
CASE WHEN total_mileage < 0 THEN 0 ELSE total_mileage END AS total_mileage,
|
||||
mileage_unit,
|
||||
attachments,
|
||||
remark
|
||||
FROM
|
||||
@@ -46,6 +50,9 @@
|
||||
<if test="mileageRecord.createDept != null">
|
||||
AND create_dept = #{mileageRecord.createDept}
|
||||
</if>
|
||||
<if test="mileageRecord.vehicleType != null and mileageRecord.vehicleType != ''">
|
||||
AND vehicle_type = #{mileageRecord.vehicleType}
|
||||
</if>
|
||||
<if test="mileageRecord.vehicleNo != null and mileageRecord.vehicleNo != ''">
|
||||
<bind name="vehicleNoLike" value="'%' + mileageRecord.vehicleNo + '%'"/>
|
||||
AND vehicle_no LIKE #{vehicleNoLike}
|
||||
|
||||
@@ -57,6 +57,8 @@ public class MileageRecordServiceImpl extends BaseServiceImpl<MileageRecordMappe
|
||||
private static final int REMARK_MAX_LENGTH = 200;
|
||||
private static final int ATTACHMENTS_MAX_LENGTH = 1000;
|
||||
private static final int MILEAGE_SCALE = 2;
|
||||
private static final String VEHICLE_TYPE_VEHICLE = "车辆";
|
||||
private static final String VEHICLE_TYPE_SHIP = "船舶";
|
||||
|
||||
@Override
|
||||
public IPage<MileageRecordVO> selectMileageRecordPage(IPage<MileageRecordVO> page, MileageRecordVO mileageRecord) {
|
||||
@@ -97,17 +99,29 @@ public class MileageRecordServiceImpl extends BaseServiceImpl<MileageRecordMappe
|
||||
@Override
|
||||
public List<MileageRecordExcel> exportMileageRecord(Wrapper<MileageRecord> queryWrapper) {
|
||||
return list(queryWrapper).stream().map(mileageRecord -> {
|
||||
MileageRecordExcel excel = Objects.requireNonNull(BeanUtil.copyProperties(mileageRecord, MileageRecordExcel.class));
|
||||
MileageRecordExcel excel = Objects.requireNonNull(
|
||||
BeanUtil.copyProperties(mileageRecord, MileageRecordExcel.class)
|
||||
);
|
||||
excel.setPreviousMonthMileage(nonNegative(mileageRecord.getPreviousMonthMileage()));
|
||||
excel.setCurrentMonthMileage(nonNegative(mileageRecord.getCurrentMonthMileage()));
|
||||
excel.setMonthlyMileage(nonNegative(mileageRecord.getMonthlyMileage()));
|
||||
excel.setTotalMileage(nonNegative(mileageRecord.getTotalMileage()));
|
||||
if (Func.isEmpty(excel.getMileageUnit())) {
|
||||
excel.setMileageUnit(defaultMileageUnit(mileageRecord.getVehicleType()));
|
||||
}
|
||||
return excel;
|
||||
}).toList();
|
||||
}
|
||||
|
||||
private void prepare(MileageRecord mileageRecord) {
|
||||
mileageRecord.setVehicleNo(trimToEmpty(mileageRecord.getVehicleNo()).toUpperCase());
|
||||
mileageRecord.setVehicleType(trimToEmpty(mileageRecord.getVehicleType()));
|
||||
if (Func.isEmpty(mileageRecord.getVehicleType())) {
|
||||
mileageRecord.setVehicleType(VEHICLE_TYPE_VEHICLE);
|
||||
}
|
||||
mileageRecord.setVehicleNo(
|
||||
normalizeVehicleNo(mileageRecord.getVehicleNo(), mileageRecord.getVehicleType())
|
||||
);
|
||||
mileageRecord.setMileageUnit(defaultMileageUnit(mileageRecord.getVehicleType()));
|
||||
mileageRecord.setRemark(trimToNull(mileageRecord.getRemark()));
|
||||
mileageRecord.setAttachments(trimToNull(mileageRecord.getAttachments()));
|
||||
if (mileageRecord.getMonthlyMileage() == null
|
||||
@@ -118,21 +132,31 @@ public class MileageRecordServiceImpl extends BaseServiceImpl<MileageRecordMappe
|
||||
}
|
||||
|
||||
private void validate(MileageRecord mileageRecord) {
|
||||
if (Func.isEmpty(mileageRecord.getVehicleNo())) {
|
||||
throw new ServiceException("车牌号不能为空");
|
||||
boolean isShip = VEHICLE_TYPE_SHIP.equals(mileageRecord.getVehicleType());
|
||||
if (!VEHICLE_TYPE_VEHICLE.equals(mileageRecord.getVehicleType()) && !isShip) {
|
||||
throw new ServiceException("车船类型不正确");
|
||||
}
|
||||
validateLength(mileageRecord.getVehicleNo(), VEHICLE_NO_MAX_LENGTH, "车牌号不能超过30字");
|
||||
if (Func.isEmpty(mileageRecord.getVehicleNo())) {
|
||||
throw new ServiceException(isShip ? "船号不能为空" : "车牌号不能为空");
|
||||
}
|
||||
validateLength(
|
||||
mileageRecord.getVehicleNo(),
|
||||
VEHICLE_NO_MAX_LENGTH,
|
||||
isShip ? "船号不能超过30字" : "车牌号不能超过30字"
|
||||
);
|
||||
validateLength(mileageRecord.getRemark(), REMARK_MAX_LENGTH, "备注不能超过200字");
|
||||
validateLength(mileageRecord.getAttachments(), ATTACHMENTS_MAX_LENGTH, "附件不能超过1000字");
|
||||
validateMileage(mileageRecord.getPreviousMonthMileage(), "上月统计里程");
|
||||
validateMileage(mileageRecord.getCurrentMonthMileage(), "本月统计里程");
|
||||
validateMileage(mileageRecord.getMonthlyMileage(), "本月行驶里程");
|
||||
validateMileage(mileageRecord.getTotalMileage(), "累计行驶里程");
|
||||
validateMileage(mileageRecord.getPreviousMonthMileage(), isShip ? "上月统计航程数" : "上月统计里程数");
|
||||
validateMileage(mileageRecord.getCurrentMonthMileage(), isShip ? "本月统计航程数" : "本月统计里程数");
|
||||
validateMileage(mileageRecord.getMonthlyMileage(), isShip ? "本月航行航程数" : "本月行驶里程数");
|
||||
validateMileage(mileageRecord.getTotalMileage(), isShip ? "累计航程数" : "累计行驶里程数");
|
||||
validateMonthlyMileageConsistency(mileageRecord);
|
||||
if (mileageRecord.getTotalMileage() != null
|
||||
&& mileageRecord.getCurrentMonthMileage() != null
|
||||
&& mileageRecord.getTotalMileage().compareTo(mileageRecord.getCurrentMonthMileage()) < 0) {
|
||||
throw new ServiceException("累计行驶里程应大于等于本月统计里程");
|
||||
throw new ServiceException(
|
||||
isShip ? "累计航程数应大于等于本月统计航程数" : "累计行驶里程数应大于等于本月统计里程数"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,7 +168,10 @@ public class MileageRecordServiceImpl extends BaseServiceImpl<MileageRecordMappe
|
||||
}
|
||||
BigDecimal calculated = mileageRecord.getCurrentMonthMileage().subtract(mileageRecord.getPreviousMonthMileage());
|
||||
if (calculated.compareTo(mileageRecord.getMonthlyMileage()) != 0) {
|
||||
throw new ServiceException("本月行驶里程应等于本月统计里程减去上月统计里程");
|
||||
if (VEHICLE_TYPE_SHIP.equals(mileageRecord.getVehicleType())) {
|
||||
throw new ServiceException("本月航行航程数应等于本月统计航程数减去上月统计航程数");
|
||||
}
|
||||
throw new ServiceException("本月行驶里程数应等于本月统计里程数减去上月统计里程数");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,8 +180,10 @@ public class MileageRecordServiceImpl extends BaseServiceImpl<MileageRecordMappe
|
||||
return;
|
||||
}
|
||||
MileageRecord oldRecord = getById(mileageRecord.getId());
|
||||
if (oldRecord != null && Func.isNotEmpty(oldRecord.getVehicleNo()) && !oldRecord.getVehicleNo().equals(mileageRecord.getVehicleNo())) {
|
||||
throw new ServiceException("车牌号保存后不可修改");
|
||||
if (oldRecord != null
|
||||
&& Func.isNotEmpty(oldRecord.getVehicleNo())
|
||||
&& !oldRecord.getVehicleNo().equals(mileageRecord.getVehicleNo())) {
|
||||
throw new ServiceException("车牌号/船号保存后不可修改");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,6 +212,15 @@ public class MileageRecordServiceImpl extends BaseServiceImpl<MileageRecordMappe
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
private String defaultMileageUnit(String vehicleType) {
|
||||
return VEHICLE_TYPE_SHIP.equals(vehicleType) ? "海里" : "公里";
|
||||
}
|
||||
|
||||
private String normalizeVehicleNo(String vehicleNo, String vehicleType) {
|
||||
String trimValue = trimToEmpty(vehicleNo);
|
||||
return VEHICLE_TYPE_SHIP.equals(vehicleType) ? trimValue : trimValue.toUpperCase();
|
||||
}
|
||||
|
||||
private String trimToEmpty(String value) {
|
||||
return value == null ? "" : value.trim();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user