UNPKG

yonbip-code-gen-mcp

Version:

YonBIP高级版代码生成MCP

80 lines 5.07 kB
### 供应商/采购商车辆信息管理功能说明 **前提**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)