feat(oms,wms):出库/运输单据增加线路车次字段,线路管理支持车次清单维护
1. OMS四张表(business_document_order/execute_order/ reservation_stock_out_order/execution_stock_out_order)加 LINE_CODE/LINE_NAME/SHUTTLE_NO三列,entity/DO/DTO/PO同步加字段, 出库两链路Mapper XML补列与resultMap。 线路编码/名称冗余存line_management的route_code/route_name (两库不互通无法join);SHUTTLE_NO为字符串(如4或31-4), 前端拼"编码-车次"显示(31-4车次);不复用route(存tms_route.id) 和train_no(入库链路占用)。 下发链路(预约单->执行单,业务单->执行单)同名拷贝自动透传。 2. WMS line_management加SHUTTLE_JSON列(车次序号JSON数组), 四层加字段+XML;DTO加反序列化器兼容前端传数组, PO加序列化器返回原样输出数组。 3. LineManagementImpl.update组织/仓库名称空串兜底, 修复编辑线路后组织名称被刷成空串、列表查不到的问题。 4. 新增建表脚本sql/20260820_oms_outbound_transport_add_line_shuttle.sql(达梦语法)。
This commit is contained in:
@@ -62,6 +62,12 @@ public class LineManagement extends BaseVOEntity{
|
||||
@ApiModelProperty("客户Json数据")
|
||||
private String customerJson;
|
||||
|
||||
/**
|
||||
* 车次清单
|
||||
*/
|
||||
@ApiModelProperty("车次Json数据(车次序号数组,如[1,2,4,6],OMS单据车次下拉数据源)")
|
||||
private String shuttleJson;
|
||||
|
||||
@ApiModelProperty("注册地址")
|
||||
private String register;
|
||||
}
|
||||
+9
@@ -14,6 +14,7 @@ import com.mhd.wms.domain.lineManagement.repository.mapper.LineManagementMapper;
|
||||
import com.mhd.wms.domain.lineManagement.repository.po.LineManagementPO;
|
||||
import com.mhd.wms.domain.lineManagement.repository.todo.LineManagementCustomer;
|
||||
import com.mhd.wms.domain.lineManagement.repository.todo.LineManagementDO;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -93,6 +94,14 @@ public class LineManagementImpl extends ServiceImpl<LineManagementMapper, LineMa
|
||||
LineManagement lineManagement = new LineManagement();
|
||||
BeanUtils.copyProperties(lineManagementDO,lineManagement);
|
||||
LineManagement lineManagementDB = this.getById(lineManagement.getId());
|
||||
//组织/仓库名称空串兜底:编辑表单未回传name(传空串)时保留库里原值,
|
||||
//防止ORGANIZATION_NAME被刷成空串后,列表按组织名称过滤查不到该线路
|
||||
if (StringUtils.isBlank(lineManagement.getOrganizationName())) {
|
||||
lineManagement.setOrganizationName(lineManagementDB.getOrganizationName());
|
||||
}
|
||||
if (StringUtils.isBlank(lineManagement.getWarehouseName())) {
|
||||
lineManagement.setWarehouseName(lineManagementDB.getWarehouseName());
|
||||
}
|
||||
//删除用户
|
||||
List<LineManagementCustomer> lineManagementCustomers =
|
||||
JSONObject.parseArray(lineManagementDB.getCustomerJson(), LineManagementCustomer.class);
|
||||
|
||||
+8
@@ -2,6 +2,7 @@ package com.mhd.wms.domain.lineManagement.repository.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@@ -56,6 +57,13 @@ public class LineManagementPO extends BaseVOEntity{
|
||||
@ApiModelProperty("客户Json数据")
|
||||
private String customerJson;
|
||||
|
||||
/**
|
||||
* 车次清单
|
||||
*/
|
||||
@ApiModelProperty("车次清单Json数组,如[\"1\",\"2\",\"4\"],OMS单据车次下拉数据源")
|
||||
@JsonSerialize(using = ShuttleJsonSerializer.class)
|
||||
private String shuttleJson;
|
||||
|
||||
@ApiModelProperty("注册地址")
|
||||
private String register;
|
||||
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
package com.mhd.wms.domain.lineManagement.repository.po;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonGenerator;
|
||||
import com.fasterxml.jackson.databind.JsonSerializer;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializerProvider;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* 车次清单序列化器:库里存的 JSON 文本(如 ["1","2","3","4"])原样输出为 JSON 数组,
|
||||
* 前端无需再 JSON.parse;空值输出 null,非法 JSON 兜底按普通字符串输出。
|
||||
*/
|
||||
public class ShuttleJsonSerializer extends JsonSerializer<String> {
|
||||
|
||||
private static final ObjectMapper MAPPER = new ObjectMapper();
|
||||
|
||||
@Override
|
||||
public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
|
||||
if (value == null || value.isEmpty()) {
|
||||
gen.writeNull();
|
||||
return;
|
||||
}
|
||||
try {
|
||||
MAPPER.readTree(value);
|
||||
gen.writeRawValue(value);
|
||||
} catch (Exception e) {
|
||||
gen.writeString(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
@@ -56,6 +56,12 @@ public class LineManagementDO extends BaseVOEntity{
|
||||
@ApiModelProperty("客户Json数据")
|
||||
private String customerJson;
|
||||
|
||||
/**
|
||||
* 车次清单
|
||||
*/
|
||||
@ApiModelProperty("车次Json数据(车次序号数组,如[1,2,4,6],OMS单据车次下拉数据源)")
|
||||
private String shuttleJson;
|
||||
|
||||
@ApiModelProperty("注册地址")
|
||||
private String register;
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package com.mhd.wms.interfaces.dto.LineManagement;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@@ -62,6 +63,13 @@ public class LineManagementDTO extends BaseVOEntity{
|
||||
@ApiModelProperty("客户Json数据")
|
||||
private String customerJson;
|
||||
|
||||
/**
|
||||
* 车次清单
|
||||
*/
|
||||
@ApiModelProperty("车次清单Json数组,如[\"1\",\"2\",\"4\"],OMS单据车次下拉数据源")
|
||||
@JsonDeserialize(using = ShuttleJsonDeserializer.class)
|
||||
private String shuttleJson;
|
||||
|
||||
@ApiModelProperty("注册地址")
|
||||
private String register;
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package com.mhd.wms.interfaces.dto.LineManagement;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* 车次清单反序列化器:前端传 JSON 数组(如 ["1","2","3","4"])或 JSON 文本字符串均可,
|
||||
* 统一转成 JSON 文本存入 String 字段落库(形如 ["1","2","3","4"])。
|
||||
*/
|
||||
public class ShuttleJsonDeserializer extends JsonDeserializer<String> {
|
||||
|
||||
@Override
|
||||
public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
|
||||
JsonNode node = p.readValueAsTree();
|
||||
if (node == null || node.isNull()) {
|
||||
return null;
|
||||
}
|
||||
return node.toString();
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="routeCode" column="route_code" />
|
||||
<result property="routeName" column="route_name" />
|
||||
<result property="customerJson" column="customer_json" />
|
||||
<result property="shuttleJson" column="shuttle_json" />
|
||||
<result property="register" column="register" />
|
||||
<!-- 继承自BaseVOEntity的字段 -->
|
||||
<result property="createTime" column="create_time" />
|
||||
@@ -38,6 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
a.route_code,
|
||||
a.route_name,
|
||||
a.customer_json,
|
||||
a.shuttle_json,
|
||||
a.create_by,
|
||||
a.create_by_name,
|
||||
a.create_time,
|
||||
|
||||
Reference in New Issue
Block a user