1.2 调用说明 请求方:DCS系统 响应方:WMS系统 数据提供方:DCS系统 数据接收方: WMS系统 方法名称:GIForOrderDemand 参数类型 字段描述 输入 形如:(//为注释,不包含在实际的返回值中) { "HEADER":[ { "PLANT": "xx",//厂别/车间/车间编号,必填 "PLANT_NAME": "xx",//车间描述,必填 "DOC_NO": "xx",//需求单号,必填 "CALL_TYPE":"xx",//Auto自动/Manual手动,必填 "CALL_SYSTEM":"xx",//DCS叫料/MES叫料,必填 "DOC_TYPE":"xx",//单据类型, Picking:分拣单,Dispatch:配送单, OVER:超领单备料, 默认Normal,必填 "DEMAND_AREA": "xx",//需求区域:默认ALL,必填 "APPLICANT": "xx",//申请人,必填 "MERGE_NO": "xx",//合并单号,非合并为空,非必填 "MERGE_SETS": xx,//合并套数, 非合并为空,非必填 "COMMENT_TEXT": "xx",//描述, 非必填 "MVT":"xx",//交易类型:261工单发料,311:调拨 非必填 "TRANSACTION_TYPE": "xx",//首发值为1/续发值为2, 非必填 },{.....} ], "ITEM": [ { "DOC_NO": "xx",//需求单号,必填 "DOC_ITEM": "xx",//申请行号,必填 "PLANT_FROM": "SMT",//发料厂别/车间 "WO_NO": "HBXXX",//工单号, 与备料单一致 "LINE_ID": "xx",//线体,必填 "LINE_NAME": "xx",//线体描述, "SLOC_FROM": "xx",//发料仓码,必填 "MAT": "xx",//成品料号,非必填 "MAT_NAME": "xx",//料号描述,非必填 "MATERIAL": "xx",//料号, 必填 "MATERIAL_NAME": "xx",//料号名称,非必填 "UNIT": "xx",//单位, 非必填 "REQUEST_QTY": xx,//需求数量,必填 "PLANT_TO": "SMT",//收料厂别/车间 , 非必填 "DOC_GROUP_NO": "xx",//合并单据群组号 , 非必填 "S_PICK_NO": "xx",// 备料单号, 必填 "SLOC_TO": "xx",//收料仓码, 非必填 "BOM_RATE": xx,//备料单单位用量字段, 非必填 "PALLET_QTY": xx,//预计总盘数, 非必填 "SETS": xx,//需求套数, 非必填 "TOTAL_QTY": xx,//领料单物料总应发量,累计发料数量不能超过此量 必填 "TOTAL_QTY_TTL": xx,//工单物料总应发量,累计发料数量不能超过此量 必填 "VENDOR": "xx",//供应商,需指定供应商时则不为null,必填 "REMAIN_QTY": xx,//工单物料剩余待发量,不准确,非必填 "PLAN_REMAIN_QTY": xx,//工单计划线体物料剩余待发量, 不准确, 非必填 "CLASSDATE":"xx",//排产日YYYYMMDD,非必填 "SCH_TIME":"xx",//YYYYMMDDHH24MISS 计划时间/优先级,为null,则优先先下发的 , "IS_INSERT_DOC":"xx",//是否插单需求 ,当是插单需求时必填 },{.....} ], } 输出 形如:(//为注释,不包含在实际的返回值中) { "success": true, //固定值 "message": { //固定值 "code": "00",//固定值 "content": null//固定值 }, "data": { "GIForOrderDemandReplyList": [ { "DOC_NO": "xx",//单号, 必填 "Result": "1:表示OK -1:表示NG ", //必填 "Reason":"OK,NG原因"//请WMS/WCS管理员及时确诠是否有库存! , 必填 },{ ...// } ], } } 用mybatisplus代码生成器生成接口和其他层相关代码
时间: 2025-07-10 11:12:06 浏览: 3
根据你提供的调用说明,`DCS系统`作为请求方,向 `WMS系统` 发送一个名为 `GIForOrderDemand` 的接口请求,用于传递订单需求信息。以下是一个基于 **MyBatis-Plus** 代码生成器的完整解决方案,包括:
- 接口定义(Controller)
- 服务层(Service + ServiceImpl)
- 数据访问层(Mapper)
- 实体类(Entity)
---
### ✅ 一、实体类设计
#### 1. 请求参数类:`OrderDemandRequest.java`
```java
import java.util.List;
public class OrderDemandRequest {
private List<Header> HEADER;
private List<Item> ITEM;
// Getter & Setter
}
class Header {
private String PLANT;
private String PLANT_NAME;
private String DOC_NO;
private String CALL_TYPE;
private String CALL_SYSTEM;
private String DOC_TYPE;
private String DEMAND_AREA;
private String APPLICANT;
private String MERGE_NO;
private Integer MERGE_SETS;
private String COMMENT_TEXT;
private String MVT;
private String TRANSACTION_TYPE;
// Getter & Setter
}
class Item {
private String DOC_NO;
private String DOC_ITEM;
private String PLANT_FROM;
private String WO_NO;
private String LINE_ID;
private String LINE_NAME;
private String SLOC_FROM;
private String MAT;
private String MAT_NAME;
private String MATERIAL;
private String MATERIAL_NAME;
private String UNIT;
private Double REQUEST_QTY;
private String PLANT_TO;
private String DOC_GROUP_NO;
private String S_PICK_NO;
private String SLOC_TO;
private Double BOM_RATE;
private Integer PALLET_QTY;
private Integer SETS;
private Double TOTAL_QTY;
private Double TOTAL_QTY_TTL;
private String VENDOR;
private Double REMAIN_QTY;
private Double PLAN_REMAIN_QTY;
private String CLASSDATE;
private String SCH_TIME;
private String IS_INSERT_DOC;
// Getter & Setter
}
```
---
#### 2. 响应结果类:`OrderDemandResponse.java`
```java
public class OrderDemandResponse {
private boolean success;
private Message message;
private Data data;
public static class Message {
private String code;
private String content;
// Getter & Setter
}
public static class Data {
private List<Reply> GIForOrderDemandReplyList;
// Getter & Setter
}
public static class Reply {
private String DOC_NO;
private String Result; // "1" or "-1"
private String Reason;
// Getter & Setter
}
// Getter & Setter
}
```
---
### ✅ 二、Controller 层
```java
@RestController
@RequestMapping("/api/order-demand")
public class OrderDemandController {
@Autowired
private OrderDemandService orderDemandService;
@PostMapping("/GIForOrderDemand")
public OrderDemandResponse handleOrderDemand(@RequestBody OrderDemandRequest request) {
return orderDemandService.processOrderDemand(request);
}
}
```
---
### ✅ 三、Service 层
#### 接口:`OrderDemandService.java`
```java
public interface OrderDemandService {
OrderDemandResponse processOrderDemand(OrderDemandRequest request);
}
```
#### 实现:`OrderDemandServiceImpl.java`
```java
@Service
public class OrderDemandServiceImpl implements OrderDemandService {
@Autowired
private OrderDemandMapper orderDemandMapper;
@Override
public OrderDemandResponse processOrderDemand(OrderDemandRequest request) {
// TODO: 校验数据合法性
// 存入数据库
for (Item item : request.ITEM) {
OrderDemandEntity entity = new OrderDemandEntity();
BeanUtils.copyProperties(entity, item);
orderDemandMapper.insert(entity);
}
// 构造返回值
OrderDemandResponse response = new OrderDemandResponse();
response.setSuccess(true);
OrderDemandResponse.Message message = new OrderDemandResponse.Message();
message.setCode("00");
message.setContent(null);
response.setMessage(message);
OrderDemandResponse.Data data = new OrderDemandResponse.Data();
List<OrderDemandResponse.Reply> replyList = new ArrayList<>();
for (Header header : request.HEADER) {
OrderDemandResponse.Reply reply = new OrderDemandResponse.Reply();
reply.setDOC_NO(header.DOC_NO);
reply.setResult("1"); // 模拟成功
reply.setReason("OK");
replyList.add(reply);
}
data.setGIForOrderDemandReplyList(replyList);
response.setData(data);
return response;
}
}
```
---
### ✅ 四、Mapper 层
```java
@Mapper
public interface OrderDemandMapper extends BaseMapper<OrderDemandEntity> {
}
```
---
### ✅ 五、实体类映射数据库表:`OrderDemandEntity.java`
```java
@Data
@TableName("order_demand")
public class OrderDemandEntity {
@TableId(type = IdType.AUTO)
private Long id;
private String DOC_NO;
private String DOC_ITEM;
private String PLANT_FROM;
private String WO_NO;
private String LINE_ID;
private String LINE_NAME;
private String SLOC_FROM;
private String MAT;
private String MAT_NAME;
private String MATERIAL;
private String MATERIAL_NAME;
private String UNIT;
private Double REQUEST_QTY;
private String PLANT_TO;
private String DOC_GROUP_NO;
private String S_PICK_NO;
private String SLOC_TO;
private Double BOM_RATE;
private Integer PALLET_QTY;
private Integer SETS;
private Double TOTAL_QTY;
private Double TOTAL_QTY_TTL;
private String VENDOR;
private Double REMAIN_QTY;
private Double PLAN_REMAIN_QTY;
private String CLASSDATE;
private String SCH_TIME;
private String IS_INSERT_DOC;
}
```
---
### ✅ 六、MyBatis Plus 配置示例(application.yml)
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_db?useSSL=false&serverTimezone=UTC
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
mapper-locations: classpath*:mapper/**/*.xml
type-aliases-package: com.example.entity
```
---
### ✅ 七、SQL 表结构示例(MySQL)
```sql
CREATE TABLE `order_demand` (
`id` bigint NOT NULL AUTO_INCREMENT,
`DOC_NO` varchar(50) DEFAULT NULL,
`DOC_ITEM` varchar(50) DEFAULT NULL,
`PLANT_FROM` varchar(50) DEFAULT NULL,
`WO_NO` varchar(50) DEFAULT NULL,
`LINE_ID` varchar(50) DEFAULT NULL,
`LINE_NAME` varchar(100) DEFAULT NULL,
`SLOC_FROM` varchar(50) DEFAULT NULL,
`MAT` varchar(50) DEFAULT NULL,
`MAT_NAME` varchar(100) DEFAULT NULL,
`MATERIAL` varchar(50) DEFAULT NULL,
`MATERIAL_NAME` varchar(100) DEFAULT NULL,
`UNIT` varchar(20) DEFAULT NULL,
`REQUEST_QTY` decimal(18,4) DEFAULT NULL,
`PLANT_TO` varchar(50) DEFAULT NULL,
`DOC_GROUP_NO` varchar(50) DEFAULT NULL,
`S_PICK_NO` varchar(50) DEFAULT NULL,
`SLOC_TO` varchar(50) DEFAULT NULL,
`BOM_RATE` decimal(18,4) DEFAULT NULL,
`PALLET_QTY` int DEFAULT NULL,
`SETS` int DEFAULT NULL,
`TOTAL_QTY` decimal(18,4) DEFAULT NULL,
`TOTAL_QTY_TTL` decimal(18,4) DEFAULT NULL,
`VENDOR` varchar(50) DEFAULT NULL,
`REMAIN_QTY` decimal(18,4) DEFAULT NULL,
`PLAN_REMAIN_QTY` decimal(18,4) DEFAULT NULL,
`CLASSDATE` varchar(8) DEFAULT NULL,
`SCH_TIME` varchar(14) DEFAULT NULL,
`IS_INSERT_DOC` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
);
```
---
### ✅ 八、调用流程图示意(文字描述)
```
[DCS] ---(POST JSON)--> [OrderDemandController]
↓
[OrderDemandService] ---(校验/处理逻辑)--> [OrderDemandMapper]
↓
[数据库持久化] <-----> [构造响应返回]
↓
[返回 OrderDemandResponse 给 DCS]
```
---
阅读全文
相关推荐


















