1、fix bug
2、完善凭证模块
This commit is contained in:
+10
-2
@@ -12,6 +12,7 @@ import org.springblade.core.secure.annotation.PreAuth;
|
||||
import org.springblade.core.tool.api.R;
|
||||
import org.springblade.transport.pojo.dto.VoucherManageSubmitRequest;
|
||||
import org.springblade.transport.pojo.dto.VoucherUploadDraftRequest;
|
||||
import org.springblade.transport.pojo.dto.VoucherFileCompleteRequest;
|
||||
import org.springblade.transport.pojo.entity.VoucherManage;
|
||||
import org.springblade.transport.pojo.vo.VoucherManageVO;
|
||||
import org.springblade.transport.service.IVoucherManageService;
|
||||
@@ -57,6 +58,13 @@ public class VoucherManageController extends BladeController {
|
||||
return R.data(voucherManageService.createUploadDraft(request));
|
||||
}
|
||||
|
||||
@PostMapping("/complete-upload-file")
|
||||
@Operation(summary = "回写已完成上传的凭证文件")
|
||||
public R completeUploadFile(@RequestBody VoucherFileCompleteRequest request) {
|
||||
voucherManageService.completeUploadFile(request);
|
||||
return R.success("文件已更新");
|
||||
}
|
||||
|
||||
@PostMapping("/remove")
|
||||
@ApiOperationSupport(order = 5)
|
||||
@Operation(summary = "删除凭证")
|
||||
@@ -65,9 +73,9 @@ public class VoucherManageController extends BladeController {
|
||||
@GetMapping("/waybill-batches")
|
||||
@ApiOperationSupport(order = 6)
|
||||
@Operation(summary = "可关联运输批次")
|
||||
public R<List<Map<String, Object>>> waybillBatches(@RequestParam(required = false) String batchNo,
|
||||
public R<IPage<Map<String, Object>>> waybillBatches(Query query, @RequestParam(required = false) String batchNo,
|
||||
@RequestParam(required = false) String createUser, @RequestParam(required = false) Integer waybillCount,
|
||||
@RequestParam(required = false) String createTimeStart, @RequestParam(required = false) String createTimeEnd) {
|
||||
return R.data(voucherManageService.selectableWaybillBatches(batchNo, createUser, waybillCount, createTimeStart, createTimeEnd));
|
||||
return R.data(voucherManageService.selectableWaybillBatches(Condition.getPage(query), batchNo, createUser, waybillCount, createTimeStart, createTimeEnd));
|
||||
}
|
||||
}
|
||||
|
||||
+13
-1
@@ -1,6 +1,18 @@
|
||||
package org.springblade.transport.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.springblade.transport.pojo.entity.VoucherManage;
|
||||
|
||||
public interface VoucherManageMapper extends BaseMapper<VoucherManage> { }
|
||||
public interface VoucherManageMapper extends BaseMapper<VoucherManage> {
|
||||
|
||||
/**
|
||||
* 查询指定租户、指定日期前缀下已使用的最大凭证流水号。
|
||||
* 不过滤逻辑删除数据,避免唯一索引仍占用历史编号时重复生成。
|
||||
*/
|
||||
@Select("SELECT COALESCE(MAX(CAST(SUBSTRING_INDEX(voucher_batch_no, '-', -1) AS UNSIGNED)), 0) "
|
||||
+ "FROM blade_voucher_manage WHERE tenant_id = #{tenantId} "
|
||||
+ "AND voucher_batch_no LIKE CONCAT(#{prefix}, '%')")
|
||||
Long selectMaxDailySequence(@Param("tenantId") String tenantId, @Param("prefix") String prefix);
|
||||
}
|
||||
|
||||
+2
-1
@@ -1,6 +1,7 @@
|
||||
package org.springblade.transport.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.springblade.transport.pojo.entity.VoucherWaybillBatch;
|
||||
|
||||
import java.util.List;
|
||||
@@ -9,7 +10,7 @@ import java.util.Map;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
public interface VoucherWaybillBatchMapper extends BaseMapper<VoucherWaybillBatch> {
|
||||
List<Map<String, Object>> selectWaybillBatches(@Param("tenantId") String tenantId, @Param("batchNo") String batchNo, @Param("createUser") String createUser,
|
||||
IPage<Map<String, Object>> selectVoucherWaybillBatchPage(IPage<?> page, @Param("tenantId") String tenantId, @Param("batchNo") String batchNo, @Param("createUser") String createUser,
|
||||
@Param("waybillCount") Integer waybillCount, @Param("createTimeStart") String createTimeStart, @Param("createTimeEnd") String createTimeEnd);
|
||||
List<Map<String, Object>> selectWaybillBatchesByIds(@Param("tenantId") String tenantId, @Param("ids") List<Long> ids);
|
||||
}
|
||||
|
||||
+17
-16
@@ -1,24 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.springblade.transport.mapper.VoucherWaybillBatchMapper">
|
||||
<select id="selectWaybillBatches" resultType="java.util.LinkedHashMap">
|
||||
SELECT b.id, b.batch_no AS batchNo, b.waybill_count AS waybillCount, b.create_time AS createTime,
|
||||
b.create_user AS createUser, u.real_name AS createUserName
|
||||
FROM blade_waybill_import_batch b
|
||||
LEFT JOIN blade_user u ON u.id = b.create_user
|
||||
WHERE b.is_deleted = 0 AND b.tenant_id = #{tenantId}
|
||||
<if test="batchNo != null and batchNo != ''">AND b.batch_no LIKE CONCAT('%', #{batchNo}, '%')</if>
|
||||
<if test="createUser != null and createUser != ''">AND b.create_user = #{createUser}</if>
|
||||
<if test="waybillCount != null">AND b.waybill_count = #{waybillCount}</if>
|
||||
<if test="createTimeStart != null and createTimeStart != ''">AND b.create_time <![CDATA[>=]]> #{createTimeStart}</if>
|
||||
<if test="createTimeEnd != null and createTimeEnd != ''">AND b.create_time <![CDATA[<=]]> #{createTimeEnd}</if>
|
||||
ORDER BY b.create_time DESC
|
||||
<select id="selectVoucherWaybillBatchPage" resultType="java.util.LinkedHashMap">
|
||||
SELECT MAX(w.create_time) AS createTime, MAX(w.create_user) AS createUser,
|
||||
MAX(u.real_name) AS createUserName, COUNT(*) AS waybillCount,
|
||||
COALESCE(NULLIF(w.batch_no, ''), '未分批运单') AS batchNo, GROUP_CONCAT(w.id ORDER BY w.create_time DESC) AS waybillIds
|
||||
FROM blade_waybill w
|
||||
LEFT JOIN blade_user u ON u.id = w.create_user
|
||||
WHERE w.is_deleted = 0 AND w.tenant_id = #{tenantId}
|
||||
<if test="batchNo != null and batchNo != ''">AND w.batch_no LIKE CONCAT('%', #{batchNo}, '%')</if>
|
||||
<if test="createUser != null and createUser != ''">AND w.create_user = #{createUser}</if>
|
||||
<if test="createTimeStart != null and createTimeStart != ''">AND w.create_time <![CDATA[>=]]> #{createTimeStart}</if>
|
||||
<if test="createTimeEnd != null and createTimeEnd != ''">AND w.create_time <![CDATA[<=]]> #{createTimeEnd}</if>
|
||||
GROUP BY COALESCE(NULLIF(w.batch_no, ''), '未分批运单')
|
||||
<if test="waybillCount != null">HAVING COUNT(*) = #{waybillCount}</if>
|
||||
ORDER BY createTime DESC
|
||||
</select>
|
||||
<select id="selectWaybillBatchesByIds" resultType="java.util.LinkedHashMap">
|
||||
SELECT b.id, b.batch_no AS batchNo, b.waybill_count AS waybillCount FROM blade_waybill_import_batch b
|
||||
INNER JOIN blade_waybill w ON w.import_batch_id = b.id AND w.is_deleted = 0
|
||||
WHERE b.is_deleted = 0 AND b.tenant_id = #{tenantId} AND w.id IN
|
||||
SELECT w.id, COALESCE(NULLIF(w.batch_no, ''), '未分批运单') AS batchNo, 1 AS waybillCount
|
||||
FROM blade_waybill w
|
||||
WHERE w.is_deleted = 0 AND w.tenant_id = #{tenantId} AND w.id IN
|
||||
<foreach collection="ids" item="id" open="(" separator="," close=")">#{id}</foreach>
|
||||
GROUP BY b.id, b.batch_no, b.waybill_count
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
+3
-1
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.springblade.core.mp.base.BaseService;
|
||||
import org.springblade.transport.pojo.dto.VoucherManageSubmitRequest;
|
||||
import org.springblade.transport.pojo.dto.VoucherUploadDraftRequest;
|
||||
import org.springblade.transport.pojo.dto.VoucherFileCompleteRequest;
|
||||
import org.springblade.transport.pojo.entity.VoucherManage;
|
||||
import org.springblade.transport.pojo.vo.VoucherManageVO;
|
||||
|
||||
@@ -15,6 +16,7 @@ public interface IVoucherManageService extends BaseService<VoucherManage> {
|
||||
VoucherManageVO detail(Long id);
|
||||
void submit(VoucherManageSubmitRequest request);
|
||||
VoucherManage createUploadDraft(VoucherUploadDraftRequest request);
|
||||
void completeUploadFile(VoucherFileCompleteRequest request);
|
||||
void removeVoucher(Long id);
|
||||
List<Map<String, Object>> selectableWaybillBatches(String batchNo, String createUser, Integer waybillCount, String createTimeStart, String createTimeEnd);
|
||||
IPage<Map<String, Object>> selectableWaybillBatches(IPage<?> page, String batchNo, String createUser, Integer waybillCount, String createTimeStart, String createTimeEnd);
|
||||
}
|
||||
|
||||
+23
-6
@@ -11,6 +11,7 @@ import org.springblade.transport.mapper.VoucherManageMapper;
|
||||
import org.springblade.transport.mapper.VoucherWaybillBatchMapper;
|
||||
import org.springblade.transport.pojo.dto.VoucherManageSubmitRequest;
|
||||
import org.springblade.transport.pojo.dto.VoucherUploadDraftRequest;
|
||||
import org.springblade.transport.pojo.dto.VoucherFileCompleteRequest;
|
||||
import org.springblade.transport.pojo.entity.VoucherManage;
|
||||
import org.springblade.transport.pojo.entity.VoucherWaybillBatch;
|
||||
import org.springblade.transport.pojo.entity.ProjectApply;
|
||||
@@ -80,7 +81,7 @@ public class VoucherManageServiceImpl extends BaseServiceImpl<VoucherManageMappe
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void submit(VoucherManageSubmitRequest request) {
|
||||
if (Func.isEmpty(request.getProjectId())) throw new ServiceException("请选择项目名称");
|
||||
if (Func.isEmpty(request.getFileName()) || Func.isEmpty(request.getFileUrl())) throw new ServiceException("请上传执行凭证压缩包");
|
||||
if (Func.isEmpty(request.getFileName()) || (Func.isEmpty(request.getFileUrl()) && Func.isEmpty(request.getFileTaskId()))) throw new ServiceException("请上传执行凭证压缩包");
|
||||
if (Func.isEmpty(request.getWaybillImportBatchIds())) throw new ServiceException("请至少关联一个运输批次");
|
||||
VoucherManage voucher = Func.isEmpty(request.getId()) ? new VoucherManage() : getById(request.getId());
|
||||
if (voucher == null) throw new ServiceException("凭证批次不存在");
|
||||
@@ -112,13 +113,29 @@ public class VoucherManageServiceImpl extends BaseServiceImpl<VoucherManageMappe
|
||||
relations.add(relation);
|
||||
}
|
||||
relations.forEach(voucherWaybillBatchMapper::insert);
|
||||
voucher.setWaybillBatchNo(relations.stream().map(VoucherWaybillBatch::getWaybillBatchNo).collect(Collectors.joining(",")));
|
||||
voucher.setWaybillBatchNo(relations.stream().map(VoucherWaybillBatch::getWaybillBatchNo).distinct().collect(Collectors.joining(",")));
|
||||
int total = relations.stream().mapToInt(VoucherWaybillBatch::getWaybillCount).sum();
|
||||
voucher.setRelatedWaybillCount(total);
|
||||
voucher.setUnRelatedWaybillCount(0);
|
||||
updateById(voucher);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void completeUploadFile(VoucherFileCompleteRequest request) {
|
||||
if (Func.isEmpty(request.getVoucherBatchNo()) || Func.isEmpty(request.getFileTaskId()) || Func.isEmpty(request.getFileUrl())) {
|
||||
throw new ServiceException("凭证文件信息不完整");
|
||||
}
|
||||
VoucherManage voucher = getOne(Wrappers.<VoucherManage>lambdaQuery()
|
||||
.eq(VoucherManage::getVoucherBatchNo, request.getVoucherBatchNo())
|
||||
.eq(VoucherManage::getIsDeleted, 0).last("limit 1"));
|
||||
if (voucher == null) throw new ServiceException("凭证批次不存在");
|
||||
voucher.setFileTaskId(request.getFileTaskId());
|
||||
voucher.setFileName(request.getFileName());
|
||||
voucher.setFileUrl(request.getFileUrl());
|
||||
updateById(voucher);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void removeVoucher(Long id) {
|
||||
@@ -129,8 +146,8 @@ public class VoucherManageServiceImpl extends BaseServiceImpl<VoucherManageMappe
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> selectableWaybillBatches(String batchNo, String createUser, Integer waybillCount, String createTimeStart, String createTimeEnd) {
|
||||
return voucherWaybillBatchMapper.selectWaybillBatches(AuthUtil.getTenantId(), batchNo, createUser, waybillCount, createTimeStart, createTimeEnd);
|
||||
public IPage<Map<String, Object>> selectableWaybillBatches(IPage<?> page, String batchNo, String createUser, Integer waybillCount, String createTimeStart, String createTimeEnd) {
|
||||
return voucherWaybillBatchMapper.selectVoucherWaybillBatchPage(page, AuthUtil.getTenantId(), batchNo, createUser, waybillCount, createTimeStart, createTimeEnd);
|
||||
}
|
||||
|
||||
private List<Map<String, Object>> selectableWaybillBatchesByIds(List<Long> ids) {
|
||||
@@ -153,7 +170,7 @@ public class VoucherManageServiceImpl extends BaseServiceImpl<VoucherManageMappe
|
||||
|
||||
private synchronized String nextCode() {
|
||||
String prefix = "PZ" + java.time.LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE) + "-";
|
||||
long count = count(Wrappers.<VoucherManage>lambdaQuery().likeRight(VoucherManage::getVoucherBatchNo, prefix));
|
||||
return prefix + String.format("%03d", count + 1);
|
||||
Long maxSequence = baseMapper.selectMaxDailySequence(AuthUtil.getTenantId(), prefix);
|
||||
return prefix + String.format("%03d", (maxSequence == null ? 0 : maxSequence) + 1);
|
||||
}
|
||||
}
|
||||
|
||||
+35
-7
@@ -186,6 +186,9 @@ public class WaybillServiceImpl extends BaseServiceImpl<WaybillMapper, Waybill>
|
||||
target.setDriverName(source.getDriverName());
|
||||
target.setDriverPhone(source.getDriverPhone());
|
||||
target.setVehicleNo(source.getVehicleNo());
|
||||
target.setCaptainName(source.getCaptainName());
|
||||
target.setCabinNo(source.getCabinNo());
|
||||
target.setContainerNo(source.getContainerNo());
|
||||
target.setTrailerVehicleNo(source.getTrailerVehicleNo());
|
||||
target.setEscortName(source.getEscortName());
|
||||
target.setEscortPhone(source.getEscortPhone());
|
||||
@@ -382,6 +385,9 @@ public class WaybillServiceImpl extends BaseServiceImpl<WaybillMapper, Waybill>
|
||||
waybill.setDriverName(TransportBusinessSupport.trimToNull(waybill.getDriverName()));
|
||||
waybill.setDriverPhone(TransportBusinessSupport.trimToNull(waybill.getDriverPhone()));
|
||||
waybill.setVehicleNo(TransportBusinessSupport.trimToNull(waybill.getVehicleNo()));
|
||||
waybill.setCaptainName(TransportBusinessSupport.trimToNull(waybill.getCaptainName()));
|
||||
waybill.setCabinNo(TransportBusinessSupport.trimToNull(waybill.getCabinNo()));
|
||||
waybill.setContainerNo(TransportBusinessSupport.trimToNull(waybill.getContainerNo()));
|
||||
waybill.setTrailerVehicleNo(TransportBusinessSupport.trimToNull(waybill.getTrailerVehicleNo()));
|
||||
waybill.setEscortName(TransportBusinessSupport.trimToNull(waybill.getEscortName()));
|
||||
waybill.setEscortPhone(TransportBusinessSupport.trimToNull(waybill.getEscortPhone()));
|
||||
@@ -422,13 +428,15 @@ public class WaybillServiceImpl extends BaseServiceImpl<WaybillMapper, Waybill>
|
||||
TransportBusinessSupport.validateRequired(waybill.getCargoType(), "货物类型不能为空");
|
||||
TransportBusinessSupport.validateRequired(waybill.getQuantityUnit(), "数量单位不能为空");
|
||||
TransportBusinessSupport.validateRequired(waybill.getCarrierType(), "承运类型不能为空");
|
||||
TransportBusinessSupport.validateRequired(waybill.getVehicleNo(), "车牌号不能为空");
|
||||
if ("承运商".equals(waybill.getCarrierType())) {
|
||||
TransportBusinessSupport.validateRequired(waybill.getCarrierName(), "承运商不能为空");
|
||||
} else {
|
||||
TransportBusinessSupport.validateRequired(waybill.getDriverName(), "司机不能为空");
|
||||
TransportBusinessSupport.validateRequired(waybill.getDriverPhone(), "司机手机号不能为空");
|
||||
if (!isRoadTransport(waybill.getTransportType())) {
|
||||
TransportBusinessSupport.validateRequired(
|
||||
waybill.getVehicleNo(), isRoadTransport(waybill.getTransportType()) ? "车牌号不能为空" : "船/航/班列号不能为空"
|
||||
);
|
||||
if (isRoadTransport(waybill.getTransportType())) {
|
||||
if ("承运商".equals(waybill.getCarrierType())) {
|
||||
TransportBusinessSupport.validateRequired(waybill.getCarrierName(), "承运商不能为空");
|
||||
} else {
|
||||
TransportBusinessSupport.validateRequired(waybill.getDriverName(), "司机不能为空");
|
||||
TransportBusinessSupport.validateRequired(waybill.getDriverPhone(), "司机手机号不能为空");
|
||||
TransportBusinessSupport.validateRequired(waybill.getTrailerVehicleNo(), "挂车车牌号不能为空");
|
||||
TransportBusinessSupport.validateRequired(waybill.getEscortName(), "押运人不能为空");
|
||||
TransportBusinessSupport.validateRequired(waybill.getEscortPhone(), "押运人手机号不能为空");
|
||||
@@ -465,6 +473,9 @@ public class WaybillServiceImpl extends BaseServiceImpl<WaybillMapper, Waybill>
|
||||
TransportBusinessSupport.validateLength(waybill.getDriverName(), 255, "司机姓名不能超过255字");
|
||||
TransportBusinessSupport.validateLength(waybill.getDriverPhone(), 50, "司机手机号不能超过50字");
|
||||
TransportBusinessSupport.validateLength(waybill.getVehicleNo(), 255, "车/船/航班/班列号不能超过255字");
|
||||
TransportBusinessSupport.validateLength(waybill.getCaptainName(), 20, "船长不能超过20字");
|
||||
TransportBusinessSupport.validateLength(waybill.getCabinNo(), 30, "舱位不能超过30字");
|
||||
TransportBusinessSupport.validateLength(waybill.getContainerNo(), 30, "箱号不能超过30字");
|
||||
TransportBusinessSupport.validateLength(waybill.getTrailerVehicleNo(), 255, "挂车车牌号不能超过255字");
|
||||
TransportBusinessSupport.validateLength(waybill.getEscortName(), 255, "押运人不能超过255字");
|
||||
TransportBusinessSupport.validateLength(waybill.getEscortPhone(), 50, "押运人手机号不能超过50字");
|
||||
@@ -496,6 +507,7 @@ public class WaybillServiceImpl extends BaseServiceImpl<WaybillMapper, Waybill>
|
||||
TransportBusinessSupport.validateNonNegative(waybill.getUnitPrice(), "单价");
|
||||
TransportBusinessSupport.validateNonNegative(waybill.getOtherFeeTotal(), "其他费用合计");
|
||||
validateRoadTaskInfo(waybill);
|
||||
validateNonRoadTaskInfo(waybill);
|
||||
TransportBusinessSupport.validateDateRange(waybill.getStartDate(), waybill.getEndDate(), "开始日期不能晚于结束日期");
|
||||
if (waybill.getEstimatedStartTime() != null
|
||||
&& waybill.getEstimatedEndTime() != null
|
||||
@@ -542,6 +554,16 @@ public class WaybillServiceImpl extends BaseServiceImpl<WaybillMapper, Waybill>
|
||||
}
|
||||
}
|
||||
|
||||
private void validateNonRoadTaskInfo(Waybill waybill) {
|
||||
if (isRoadTransport(waybill.getTransportType())) {
|
||||
return;
|
||||
}
|
||||
TransportBusinessSupport.validateLength(waybill.getVehicleNo(), 30, "船/航/班列号不能超过30字");
|
||||
TransportBusinessSupport.validateLength(waybill.getCaptainName(), 20, "船长不能超过20字");
|
||||
TransportBusinessSupport.validateLength(waybill.getCabinNo(), 30, "舱位不能超过30字");
|
||||
TransportBusinessSupport.validateLength(waybill.getContainerNo(), 30, "箱号不能超过30字");
|
||||
}
|
||||
|
||||
private boolean isRoadTransport(String transportType) {
|
||||
String value = transportType == null ? "" : transportType.toLowerCase();
|
||||
return value.contains("公路") || value.contains("道路") || value.contains("road") || "gl".equals(value);
|
||||
@@ -590,6 +612,9 @@ public class WaybillServiceImpl extends BaseServiceImpl<WaybillMapper, Waybill>
|
||||
putIfNotEmpty(carrier, "driverName", waybill.getDriverName());
|
||||
putIfNotEmpty(carrier, "driverPhone", waybill.getDriverPhone());
|
||||
putIfNotEmpty(carrier, "vehicleNo", waybill.getVehicleNo());
|
||||
putIfNotEmpty(carrier, "captainName", waybill.getCaptainName());
|
||||
putIfNotEmpty(carrier, "cabinNo", waybill.getCabinNo());
|
||||
putIfNotEmpty(carrier, "containerNo", waybill.getContainerNo());
|
||||
putIfNotEmpty(carrier, "trailerVehicleNo", waybill.getTrailerVehicleNo());
|
||||
putIfNotEmpty(carrier, "escortName", waybill.getEscortName());
|
||||
putIfNotEmpty(carrier, "escortPhone", waybill.getEscortPhone());
|
||||
@@ -630,6 +655,9 @@ public class WaybillServiceImpl extends BaseServiceImpl<WaybillMapper, Waybill>
|
||||
putIfNotEmpty(taskInfo, "driverName", waybill.getDriverName());
|
||||
putIfNotEmpty(taskInfo, "driverPhone", waybill.getDriverPhone());
|
||||
putIfNotEmpty(taskInfo, "vehicleNo", waybill.getVehicleNo());
|
||||
putIfNotEmpty(taskInfo, "captainName", waybill.getCaptainName());
|
||||
putIfNotEmpty(taskInfo, "cabinNo", waybill.getCabinNo());
|
||||
putIfNotEmpty(taskInfo, "containerNo", waybill.getContainerNo());
|
||||
putIfNotEmpty(taskInfo, "trailerVehicleNo", waybill.getTrailerVehicleNo());
|
||||
putIfNotEmpty(taskInfo, "escortName", waybill.getEscortName());
|
||||
putIfNotEmpty(taskInfo, "escortPhone", waybill.getEscortPhone());
|
||||
|
||||
Reference in New Issue
Block a user