yonbip-code-gen-mcp
Version:
YonBIP高级版代码生成MCP
80 lines • 5.07 kB
Markdown
### 供应商/采购商车辆信息管理功能说明
**前提**:
1. 涉及单据:A(车型信息)、B(车辆信息管理)
2. VO类:
- A:com.yonyou.ucf.mdf.bill.entity.carOrder.VehicleMsgO
- B:com.yonyou.ucf.mdf.bill.entity.carOrder.VehicleOrderBatchInfoManag
eO
3. A分供应商端与采购端(实体相同,显示字段不同)
4. 引⽤类:IBillRepository、YpdBillContext;不使⽤jdbcTemplate;分层参考AutoMa
pPlugin
**业务实现**:
#### 一、A相关处理
1. 新建类:com.yonyou.ucf.mdf.plugin.carOrder.VehicleMsgOPPlugin(继承Abstra
ctBillPlugin)
2. 数据隔离规则:按租户ID区分。采购端租户为pca7ixf4;供应商端租户取自iuap_apdoc_cor
edoc.aa_vendor的cRelationTenantId(条件:aa_vendor.id=VehicleMsgO的SUPPLIE
R)
3. 采购端A保存处理(重写afterSave):
- ID翻译:匹配数据源(iuap_apdoc_basedoc.bd_cust_doc,其custdocdefid关联cod
e含VM的def表),当字段值=数据源id时,对应Name字段赋值为数据源name
4. 采购端A新增处理(_status=2,afterSave):复制为供应商A单据(新id,def10记录
采购端id,租户改为供应商的租户)
5. 采购端A修改处理(_status=1,afterSave):按def10查找对应的供应商A单据,同步数据
并刷新pubts
6. 供应商A权限:仅可查询,不可更改
#### 二、B相关处理
1. 新建类:com.yonyou.ucf.mdf.plugin.carOrder.VehicleOrderBatchInfoManageOP
Plugin(继承AbstractBillPlugin)
2. 数据隔离规则:同A的租户规则
3. 权限控制:仅供应商端B可保存,采购端B不可保存
4. 供应商端B新增(_status=2)/编辑(_status=1,afterSave)处理:
- 新增:复制为采购端B数据(租户设为pca7ixf4,新id,billstatus=001,supplie
r=供应商id,DEF10=供应商B id;子表def11=原id、新id;采购端B的sourceId=供应商A主
键,同时更新A的def2为“已处理”)
- 编辑:删除原复制的采购端B单据
5. 采购端B编辑:不执行afterSave
6. 供应商端B删除方法:
- beforeDelete:验证billstatus=001时可删除,否则禁⽌删除
- afterDelete:删除采购端B数据(dr=1),更新供应商A的def2为空,供应商B的def10为
采购商id
#### 三、接⼝与服务
1. 参照MaterialMapping相关类位置,生成VehicleOrderBatchInfoManageOPP的Control
ler、Service、ServiceImpl
2. VehicleOrderBatchInfoManageOPPController新增接口:
- 同意/驳回:非供应商端B可操作,同意时供应商端B和采购端B的billstatus=003;驳回时=
005(业务逻辑在Service层,Controller调⽤Service)
- 提交:仅供应商端B可操作,操作后采购端B的dr=0、billstatus=004;供应商端B的bill
status=002(业务逻辑在Service层)
3. 生成结束后,重新梳理Controller、Service、ServiceImpl的调口关系
#### 四、代码⽣成验证
1. 流水线运行正常
2. 微服务运行正常
3. 采购端新建单据A,供应端同步⽣成新建单据A,测试正常
4. 供应端B保存后billstatus为空问题分析:原描述未明确B保存时billstatus需设为001,仅
说明复制出的采购商B为001,导致理解偏差(处理失败)
#### 五、代码测试及bug修复
1. 采购端A删除时,供应端A同步删除
2. 供应端B保存单据后billstatus为空问题:需修复并赋值001(此前处理失败)
3. 供应商端B保存前,在beforeSave中设置billstatus的值为001
4. submit接口接收参数为数组,需修复适配
5. 供应商端B保存复制采购商B时,租户值未重新设置,需修复
6. 供应商端B仅未提交单据可删除的判断有误,需重新查询数据库中billstatus的值并修复
7. 采购商B的approve⽅法和reject方法增加批量处理功能,参数改为数组
8. approve和reject执行时,需根据def10判断当前为采购商B还是供应商B(采购商B的def10=
供应商id)
#### 注意事项
1. 当列表不显示某些字段时,上下文无法获取对应字段值,需重新查询(如billstatus)
2. 已生成逻辑若手动修改,重新生成后手动修改内容是否保留?
#### 优势
1. 若生成的代码逻辑错误,基本无bug,相比手动编写(bug较多、修改后需重新构建)效率更高
#### 五、代码测试及bug修复
1. 采购端A删除时,供应端A同步删除
2. 供应端B保存单据后billstatus为空问题:需修复并赋值001(此前处理失败)
3. 供应商端B保存前,在beforeSave中设置billstatus的值为001
4. submit接⼝接收参数为数组,需修复适配
5. 供应商端B保存复制采购商B时,租户值未重新设置,需修复
6. 供应商端B仅未提交单据可删除的判断有误,需重新查询数据库中billstatus的值并修复
7. 采购商B的approve方法和reject方法增加批量处理功能,参数改为数组
8. approve和reject执行时,需根据def10判断当前为采购商B还是供应商B(采购商B的def10=
供应商id)