Commit Graph

749 Commits

Author SHA1 Message Date
刘泉佳 125054359a refactor: 收票登记删除冗余金蝶同步字段并修正迁移脚本锚点 2026-09-23 10:30:17 +08:00
刘泉佳 171bc9ea2c fix: 金蝶付款结果定时回写默认false 2026-09-23 10:27:44 +08:00
刘泉佳 a09ec53b59 fix: 注释sql 2026-09-23 10:19:06 +08:00
刘泉佳 a2aeeb920d 📝 更新收票推送金蝶与票池选票业务流程文档,新增收票单推送全链路文档 2026-09-23 10:16:17 +08:00
刘泉佳 562127232b ✨ 收票单推送金蝶全链路(A303-2保存+A302-6指定应付+A801-3回写)与金蝶票池实时游标分页重构,下线镜像分页与定时绑定任务 2026-09-23 10:15:36 +08:00
刘泉佳 4de9534eba 🐛 BFI收票单查询修改时间字段修正为modifytimeS,开票申请发票查询新增mock调试开关 2026-09-23 10:14:56 +08:00
刘泉佳 6c81e7771d fix: 金蝶推送组织编码缺失报错改显示组织名称替代部门ID 2026-09-23 03:34:39 +08:00
b2894lxlx f91fc19745 ⚡ 计费方案运输方式精确匹配,并完善付款与运单费用生成
修复公路/铁路子串误匹配导致错生成应收应付;尾款付款支持关联预结算单;运单新建/复制为已完成时按合同计费生成应收应付。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-23 00:17:13 +08:00
刘泉佳 38c25d862e docs: 新增金蝶票池选票统一查镜像业务流程文档 2026-09-22 21:26:37 +08:00
刘泉佳 56e3e9deb0 feat: 金蝶票池选票统一查镜像(收票登记与结算单认领统一分页查询+按票号补查+A801-1限定正常票,下线实时透传假分页) 2026-09-22 21:24:00 +08:00
b2894lxlx 3e23507b3a ✨ 客商评分提交校验、复评状态与空评分持久化
提交审批前必须完成且仅保留一条自评,审核通过前必须完成复评。
列表返回最新复评状态;删除最后一条评分会落库;评分为 0 时不再被当成空值覆盖。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 20:21:43 +08:00
刘泉佳 b17f07b6c1 ♻️ 修复FormalSettlementServiceImpl审批状态常量引用 2026-09-22 14:49:54 +08:00
刘泉佳 06e6c9543f ♻️ syncKingdeeInvoiceResult优化N+1问题,使用批量查询和批量插入/更新 2026-09-22 14:29:37 +08:00
刘泉佳 1268561fd9 ✨ A303-5开票结果回写支持Base64解码响应并补充关键日志 2026-09-22 14:07:25 +08:00
刘泉佳 430fc6b5a7 ✨ 开票申请推送金蝶数电普票增加是否含税标记(hsbz=1) 2026-09-22 12:10:11 +08:00
b2894lxlx 14c1d9dff0 ✨ 认证退出与操作日志、密码规则,以及运输业务多项修正 2026-09-22 12:03:59 +08:00
刘泉佳 dd37c01500 ♻️ 审批状态常量抽取至TransportBusiConstant公共类 2026-09-22 11:26:20 +08:00
刘泉佳 d64b45d55d 📝 开票申请金蝶主表字段表补购销方地址电话与开户行展示开关 2026-09-22 11:03:41 +08:00
刘泉佳 b0cc93bf08 ✨ 开票申请推送金蝶补齐购销方地址电话与开户行票面展示字段
销方 showsaleraddresstel/showsalerbank 随地址电话、开户行账号一同置 true;新增购方 buyeraddr/buyerbank(取申请单受票方快照注册地址+联系电话、开户行+银行账号)及展示开关 showbuyeraddresstel/showbuyerbank;同时注释掉分录税收分类编码的联调硬编码,恢复取商品行快照。
2026-09-22 11:03:12 +08:00
刘泉佳 6fa7761760 📝 更新开票申请同步金蝶分录取数口径文档
A303-1 分录字段映射表补全 goodscode/remark/单价税额来源,明确不回查开票项目主数据、不按开票明细费用行展开分摊,税收分类编码与税率为空即报错。
2026-09-22 10:52:09 +08:00
刘泉佳 3edefa9b4b ♻️ 开票申请同步金蝶分录组装改为纯页面商品行透传
resolveInvoiceApplyEntries 去掉开票项目主数据全量拉取(ISysClient.getInvoiceItems)与合同计费规则链路(开票明细→正式结算明细→应收费用行 billing_rules_json)两处回查,分录的分类/简称/税收分类编码/税率/金额/税额/单价/备注全部取商品行落库值,行缺编码或缺税率直接报错;取数收敛为张次+商品行两条查询,避免逐张 N+1。
2026-09-22 10:51:49 +08:00
b2894lxlx 5254a46de8 Merge remote-tracking branch 'websoft/master' 2026-09-21 22:33:12 +08:00
刘泉佳 75d5b8cf81 ⚡ 开票申请相关实体补充字段描述注释 2026-09-21 21:19:34 +08:00
刘泉佳 447b087f67 ✨ 开票申请同步金蝶分录改按开票明细费用行展开逐行勾稽,税率透传开票项目小数,补销方地址电话与开户行账号,主表仅传必填字段 2026-09-21 21:19:26 +08:00
刘泉佳 72a1cfa9ec ✨ 开票项目主数据新增跨服务Feign查询(ISysClient.getInvoiceItems,启用档案按分类简称排序) 2026-09-21 21:19:18 +08:00
刘泉佳 7964690e5d 📝 新增应收结算与开票申请同步金蝶设计文档及全链路业务流程文档 2026-09-21 19:14:44 +08:00
刘泉佳 b454bdc6e3 ✨ 金蝶结果定时任务编排应收勾稽纠偏与开票结果回写子流程 2026-09-21 19:14:38 +08:00
刘泉佳 39ffac15e2 ✨ 开票申请同步金蝶A303-1并回写A303-5开票结果(销方与税收分类编码随单据取数,新增发票结果表) 2026-09-21 19:14:20 +08:00
刘泉佳 82b347cb18 ✨ 应收正式结算单同步金蝶财务应收单(A302-2保存+A302-4幂等预检与定时勾稽纠偏) 2026-09-21 19:14:05 +08:00
刘泉佳 b3eee6347b ⚡ 金蝶全票池定时同步按变更比对落库并加 single-flight 锁
- 镜像批量 upsert 增加票面字段指纹比对,票面无变化不重写(含 attachments_json 大字段),口径对齐 MyBatis-Plus 非空字段更新策略
- 收票登记绑定前比对 kingdeeInvoicePoolId/kingdeeBillNo/kingdeeStatus,三项均无变化不更新;同步流水只在绑定关系变化或金蝶状态迁移时写入,原因文案按语义拆分为「定时绑定」与「定时刷新」
- 同步入口按租户加 RedisLockClient 分布式锁做 single-flight(零等待、租约可配 lockLeaseSeconds),未开启 blade.lock.enabled 时降级执行并告警
- 客商税号白名单明确为购、销双方税号均须命中客商档案(我方主体税号亦在档案中),抽出 taxNoArchived 做空值防护
- 日志补强:每页过滤漏斗明细、镜像无变化数、镜像未匹配登记提示、翻页触顶告警、补偿绑定耗时与远程补查次数、解析失败带发票号码
- Nacos 模板:MySQL 连接串补 rewriteBatchedStatements=true 使 JDBC 批量真正合批;dev/test 开启 blade.lock.enabled,prod 补开启前置条件说明
- SyncKingdeeTest:方法名更正为 syncKingdeeInvoicePool,测试属性关闭 syncEnabled,避免 cron 与手动触发在同一 JVM 并发跑
2026-09-21 17:31:22 +08:00
b2894lxlx 12ef1210bc 组织同步逻辑修改 2026-09-21 17:01:10 +08:00
b2894lxlx d1821bbfcf 组织同步逻辑修改 2026-09-21 16:37:24 +08:00
b2894lxlx 2fbbf9b0bb 组织同步逻辑修改 2026-09-21 16:21:15 +08:00
b2894lxlx 427e4b0c84 组织同步逻辑修改 2026-09-21 16:03:28 +08:00
b2894lxlx 2404281bff 项目、合同、运单、预结算、正式结算、付款对接mk 2026-09-21 13:52:34 +08:00
刘泉佳 9a82ed2eaf 📝 新增收票管理同步金蝶全票池发票(A801-1 查询+批量同步+定时绑定关联)业务流程文档 2026-09-21 13:19:10 +08:00
刘泉佳 738c5c2539 🔧 收票管理金蝶全票池同步新增 Nacos 配置(开关/cron/增量窗口/种类白名单/补偿限量) 2026-09-21 13:19:01 +08:00
刘泉佳 f13f983467 ✨ 收票管理对接金蝶全票池(A801-1):批量同步/定时绑定/补偿兜底
批量同步按钮改调 A801-1 按发票号码精确查询并回填绑定;新增定时绑定任务(滚动增量窗口分页、镜像批量 upsert、绑定页级事务批量落库、发票种类与客商税号白名单过滤、未绑定登记按号补偿兜底);新增手动触发端点 /invoice-receipt/sync-invoice-pool
2026-09-21 13:18:52 +08:00
刘泉佳 69fee13242 ✨ 收票管理金蝶全票池同步:镜像表新增票池字段(幂等脚本)与实体字段备注 2026-09-21 13:18:41 +08:00
b2894lxlx 2dafd44c26 项目、合同、运单、预结算、正式结算、付款对接mk 2026-09-21 12:54:13 +08:00
b2894lxlx cfe36dfc8b 项目、合同、运单、预结算、正式结算、付款对接mk 2026-09-21 11:38:44 +08:00
weicw-dshsa 6b97685165 🐛 修复网关经 blade-common 传递依赖启动失败
fd6563f 为 LenientDateParser 引入的 blade-starter-log(compile scope)
把 blade-core-tool 等整棵依赖树传递给所有依赖 common 的模块。网关
(WebFlux) 的 pom 排除了 spring-boot-starter-web(无 spring-webmvc),
而 blade-core-tool 的自动配置 BladeConverterConfiguration implements
WebMvcConfigurer 且无 @ConditionalOnClass 守卫,Spring 解析该配置类时
抛 FileNotFoundException 导致网关启动即崩。

修复:starter-log 改为 provided —— 编译期 ServiceException 可见,
不再向下游传递。业务服务运行时的 ServiceException 由 blade-core-boot
传递提供,行为不变。

验证:网关以原 classpath 启动成功(Started GateWayApplication in
16.4s);blade-common 与全仓 BUILD SUCCESS。
2026-09-21 10:44:30 +08:00
b2894lxlx 0797785176 项目、合同、运单、预结算、正式结算、付款对接mk 2026-09-21 10:36:00 +08:00
weicw-dshsa fd6563f53b ✨ 批量导入日期宽容解析:兼容 2026-08-02 与 2026-8-2 等书写变体
- blade-common 新增 LenientDateParser(宽容解析:- / . 分隔符、补零与否、
  时间可省略秒/分;拒绝两位年份、日在前、无分隔符)
- 新增 LenientDateStringConverter / LenientDateTimeStringConverter:
  Excel 数值日期转文本透传,文本解析留待服务层以进入失败明细流程
- 8 个裸走 fastexcel 内置转换的导入 DTO(保险/年检/事故/其他费用/运单/
  币种/用户生日/设备台账)日期字段改为 String 承载,服务层统一经
  LenientDateParser 解析,失败报「<列名> 日期格式无法识别:<原值>」
- MaintenancePlanDateTimeConverter / TireReplacementDateStringConverter
  内部委托公共解析器,6 个 DTO 注解零改动
- 运输计划、运单批量、运输对账、换胎 4 处手动解析点收敛至同一工具类
- UserMapper 导出 SQL 的生日改 DATE_FORMAT 输出,保持导出格式不变

口径见根工作区 docs/import-spec.md(weicw/tms-erp#1)。

回归:port-terminal 45 断言、violation-record 40 断言(含新增不补零
用例 09)、waybill-import 48 断言、insurance-record 新增用例 6 断言,
全部通过。
2026-09-21 09:47:50 +08:00
weicw-dshsa ddfa52a2ac ⚡ 收窄运输方式枚举为公路/铁路/水路/航空四种
运输计划导入校验白名单去掉「公路整车、公路配载/零担、跨境海运」

运单批量导入字典兜底值去掉多余枚举,仅保留四种运输方式
2026-09-21 06:24:31 +08:00
weicw-dshsa 37d0ebc21e ⚡ 导入失败明细去掉空单元格底纹
标红统一只改红色字体,不再对空单元格加浅红底纹(IndexedColors.ROSE)。
底纹原本是为「必填项为空时红字在屏幕上看不见」而加,但它超出
AGENTS.md §6.11「仅出错字段/列使用红色文字」的口径,视觉上也偏重。

- markRed(Cell, boolean) 简化为 markRed(Cell),删除 redFillStyleCache 与 isBlankValue
- 空单元格的红色字体样式照旧写入 styles.xml,api-violation-xlsx-cols.js
  按字体色判定,回归用例 03/04 不受影响
- 影响所有使用 ImportFailureExcelUtil 的导入模块(20+ 个)
2026-09-21 05:52:31 +08:00
weicw-dshsa 993f802111 ⚡ 精简运单导入车牌号校验的失败原因
一次车牌号错误原来最多会叠出「长度不能少于7位」「首位必须是省份简称、
第二位必须是英文字母」「格式不正确」三条原因,导出的失败明细里这一格很长。
现将公路运输下的必填、长度与格式统一为一条「车牌号校验不通过」。

- 校验强度不变:长度 7/8 位本就由 VEHICLE_NO_PATTERN 蕴含,省份简称白名单照旧
- 保留「车牌号」字样,失败明细仍能按列名拆词匹配并标红车牌号列;车牌为空时
  走空单元格红底纹分支,比原来只有文字更容易定位
- 未改动「同一配载标识号下,车牌号不一致」,该原因由 tests/fixtures/waybill-import
  用例 04 断言
2026-09-21 05:45:49 +08:00
weicw-dshsa 4c96583701 🐛 修复码头导入父港口取列不一致导致的静默丢数据
importTerminals 中 setParentCode 取「港口编码」列,而抑制连带报错时
却用「上级港口编码」判断父行是否已声明。用户若把完整编码填入
「码头编码」并让「港口编码」留空,父港口解析失败的异常会被误判为
「父行已声明」而吞掉,码头被静默丢弃且接口返回成功。

- splitByCategory 增加码头行「港口编码」非空校验,明确报错
- 抑制逻辑改为与 setParentCode 取同一列
2026-09-21 05:34:59 +08:00
weicw-dshsa 8485efe00d 🐛 修复导入失败明细无法按列标红的问题
4e1a162 移除了按列名匹配逻辑后只剩失败原因列标红。
现恢复并修正误标红:命中片段被更长片段覆盖时只保留更长的列
(避免原因含「车船类型」时把子串「类型」列一起标红)。
2026-09-21 05:21:27 +08:00
weicw-dshsa b02aff8ff6 ✨ 运单导入支持多货物合并与配载路线串联
- 同一运单标识号的多行货物合并为一条运单,各行转为货物明细写入 goodsJson,数量与其他费用合计按行累加

- 新增组内一致性校验:发货地址、到货地址、数量单位、配载标识号不一致时报错,避免无法合并的数据静默落库

- 配载单路线按导入顺序串联,上一票到货地与下一票发货地重合时去重写入途经地,到货地取末票
2026-09-21 04:19:55 +08:00