Commit Graph

299 Commits

Author SHA1 Message Date
weicw-dshsa 1de48db233 ✨ 司机端小程序接口按运次下发列表与详情,并支持整单接单与拒单
新增 /waybill/task/{current,pending-preview,counts,page,detail,accept,reject}:
列表一页若干个运次,详情按是否配载单下发整趟车站点(route_json 顺序,
装N/卸N 指向配载单运单集合里的第 N 张子运单,每站货物取子运单);
一次接单把该运次未走完的子运单一起置为已接单,一次拒单整单拒绝。
旧的运单级端点与写入口语义不变。
2026-10-17 18:13:58 +08:00
weicw-dshsa 9a43863c09 ✨ 新增运次读服务,小程序列表与详情按运次聚合
运次=有配载单时那张配载单(含全部子运单),没有配载时就是一张运单。
一次库层查询按运次分组完成状态聚合、接单需求合并、排序与分页,
供司机端与管理端共用;聚合读只读,不触发接单态归一化的写库。
2026-10-17 17:24:36 +08:00
b2894lxlx 0bcb355079 🐛 修复MK公开页审批回写,并支持OA部门按公司oaId轮询同步
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-17 15:35:20 +08:00
weicw-dshsa 60e2afe938 ✨ 司机个人认证新增出生年月与住址字段
个人认证快照(PersonCertSubmitRequest)增加 birthday / addressRegion / address,
审核通过时写回司机档案的 birthday / address_region / address 三列。

住址拆成两段是与管理端对齐:blade_transport_driver 有 address_region(地址区划)
与 address(详细地址)两列,管理端的 address_region 存的是各级区划名称直接拼接的
串(如「广西壮族自治区柳州市柳北区」),不是编码,这里沿用同一形状,两端才互相认得。

写回时区划与详细地址都过 blankToNull:框架的 not_null 更新策略只跳过 null,
司机端这两项都是选填,没填时提交的是空串,直接写会把管理端已填的住址清空。

OCR 身份证别名补上「出生」「住址」;birthday 拼写不以 Date 结尾,还要一并纳入
isDateField,否则「1979年11月17日」会原样下发,填不进日期框。
2026-10-17 12:38:02 +08:00
b2894lxlx 6f73e3fbf9 🐛 修复应付承运商、汇票占用、一单多货结算与运输对账完成校验
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-17 08:31:33 +08:00
weicw-dshsa b27e08acd5 Merge remote-tracking branch 'origin/master' into dev 2026-10-17 01:12:05 +08:00
刘泉佳 784c532d9c feat: 结算调整单审批自动推送与冲销后重推新单 2026-10-16 19:46:27 +08:00
刘泉佳 bf9c1cc890 feat: 结算调整单接入金蝶数据模型与冲销查询能力 2026-10-16 19:45:57 +08:00
b2894lxlx cfa77cbba3 ✨ 新增结算规则定时生成,并支持付款申请多结算单与导入停用费用项提示
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-16 16:03:23 +08:00
b2894lxlx 22425708a8 Merge remote-tracking branch 'websoft/dev' 2026-10-16 11:47:52 +08:00
b2894lxlx 93a6555293 ✨ 新增项目预付核销,并修复平台公司多选、常用线路组织过滤与登录 IP 连坐锁
结算附件支持项目预付核销并扣减可付款金额;加固项目平台公司多选字段扩容脚本;常用线路新增归属组织与列表筛选对齐;登录失败仅按账号锁定,取消 IP 级连坐。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-16 02:01:58 +08:00
b2894lxlx 0657cfe69f !2 金蝶解锁回调以及客商审核通过推送金蝶失败被吞异常,以及补充文档
Merge pull request !2 from mindless/feature/payment-apply-bfi-sync
2026-10-15 16:58:41 +00:00
b2894lxlx d7bf82b159 ✨ 新增导入结算单,并修复运单超管组织过滤与计量单位软删恢复
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-16 00:56:54 +08:00
b2894lxlx 0518bf94bf ✨ 组织同步收敛为双顶级与二级公司白名单
集团顶级改为 id=1/广西现代物流集团有限公司,仅同步 OA 公司 2、135 及其子公司与部门,并同步客商固定所属组织名称。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-15 12:47:11 +08:00
刘泉佳 cb19618101 fix: 解锁标识术语统一为金蝶锁单/金蝶删单
- 回调操作类型展示口径统一:SAVE=金蝶锁单(保存触发解锁,单据仍在)、DELETE=金蝶删单
- 同步更新解锁标识标签、VO 注释与业务流程文档
2026-10-15 11:44:37 +08:00
刘泉佳 f23e24e808 fix: 修正金蝶解锁回调单号定位并新增解锁终态页面标识
- 回调方向与锁定相反:按金蝶单号+我方单号双条件反查最新locked锁记录(targetBillType回调为空不参与匹配)
- 回调处理批量化:一次IN查询+updateBatchById批量落库,消除逐张查询/更新N+1
- 新增KingdeeUnlockMark展示契约与fillUnlockMarks通用填充,付款申请/结算单/开票申请VO回填解锁时间、操作人、动作名称
- 更新金蝶单据锁定与解锁业务流程文档(回调方向、解锁后数据变化、事务语义、联调实测结论)
2026-10-15 11:29:11 +08:00
刘泉佳 6fc2cca9ef Merge branch 'feature/payment-apply-bfi-sync' into feature/hcs-api-p0
# Conflicts:
#	blade-service/blade-transport/src/main/java/org/springblade/transport/mk/MkProcessBizHandlers.java
#	blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ContractManageServiceImpl.java
#	blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/InvoiceApplicationServiceImpl.java
#	blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/InvoiceReceiptServiceImpl.java
#	blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java
#	blade-service/blade-transport/src/main/java/org/springblade/transport/task/CustomerKingdeeSyncTask.java
#	blade-service/blade-transport/src/main/java/org/springblade/transport/task/PaymentKingdeeResultTask.java
#	doc/nacos/blade.yaml
#	doc/nacos/third-party-api.yaml
2026-10-15 04:07:13 +08:00
刘泉佳 865e3a0498 Merge branch 'master' into feature/payment-apply-bfi-sync
# Conflicts:
#	blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchiveServiceImpl.java
2026-10-14 14:24:27 +08:00
b2894lxlx 6f4812db75 ✨ 项目申请平台公司多选,运单导入承运商筛选与复制草稿优化
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-14 12:59:31 +08:00
b2894lxlx 5bd7c8d755 ✨ 机构OA同步支持双顶级与GWWL分段编码规则
固定集团锚点 id=135/GWWL 与独立外部组织顶级并存;公司/部门编码按上级直拼三位数字生成,并修正类型与孤儿清理逻辑。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-14 10:44:38 +08:00
weicw-dshsa 6fecc262b1 ✨ 司机端运单卡片补运输组织类型字段
DriverWaybillCardVO 加 transportOrgType,toCard 按运单是否带配载单号判定 common/load;司机端详情、首页当前任务与列表共用该出口
2026-10-13 13:54:51 +08:00
刘泉佳 9e4b8a6d58 :feat: HCS附件转传映射落库,Redis缓存判重改为blade_hcs_attachment_sync持久化表
- 新增 HcsAttachmentSync 实体与 Mapper(biz_type+biz_id+attachment_key 唯一,照金蝶附件同步表设计,仅落成功记录)
- HcsAttachmentSupport 移除 BladeRedis 依赖,transferOne 查表命中即复用合规附件ID,未命中上传后落行
- transferAttachments/transferContractAttachments 增加 bizType/bizId 入参,六个调用点(合同主附件/特批说明/特批付款/履约记录/开票登记/收票单)传入业务上下文
- HcsSyncConstant 删除 ATTACHMENT_CACHE_KEY_PREFIX/ATTACHMENT_CACHE_TTL_DAYS 缓存常量
- 新增建表脚本 blade_hcs_attachment_sync_20261012.sql,技术设计文档 §6 映射缓存表述同步更新
2026-10-12 16:51:04 +08:00
b2894lxlx ea1829cd75 🐛 修复小程序令牌严格校验 401,并开放调度端打卡接口
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-12 14:47:17 +08:00
b2894lxlx 17ede93a04 ✨ 新增小程序用户后台管理接口与菜单
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-12 13:49:08 +08:00
b2894lxlx e19c3b100a ✨ 小程序用户独立为 blade_mp_user,并兼容司机/车辆 OCR 宽松日期
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-12 13:02:08 +08:00
b2894lxlx 42ca5ee7bc Merge remote-tracking branch 'websoft/dev'
# Conflicts:
#	blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/DriverWaybillServiceImpl.java
2026-10-12 10:39:38 +08:00
刘泉佳 8e6e263921 :feat: 新增外部客商高风险黑名单管控与合同自动特批
1. GET /hcs/risk 返回 CustomerRiskVO:内部组织客商默认无风险不调合规,外部客商高风险/黑名单返回固定风险提示文案(riskTip),供基本信息备注后展示
2. 合同三个提交入口(submit/toTemporary/submitFormal)校验:甲乙方任一方高风险/黑名单时必须上传特批说明附件(attachmentType=spec_explanation)
3. pushContract 流程重排:C101-1 风险校验仅留痕不再阻断,C103-1 起草成功后高风险/黑名单合同自动挂起特批审核(currentNode)并发起 C103-8,解开原 need 挂起无 hcs_fd_id 的特批死锁
4. 特批结果联动:B103 回传/人工确认 approved 恢复审批通过展示,rejected 联动合同审批驳回走重新审批闭环
5. 补充推送入口/自动特批触发/跳过原因日志,流程梳理文档同步更新(§二/§七/§八/新增§九)
2026-10-11 17:47:53 +08:00
b2894lxlx 68fede2caf 🐛 完善港口码头/铁路导入失败原因与软删除恢复,并修复运单导入列表筛选
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-10 16:20:21 +08:00
刘泉佳 5d1f977abd feat: 付款申请纳入金蝶单据锁定与解锁流程(推送后锁单-删单回调还原-作废守卫-锁状态展示) 2026-10-10 16:00:32 +08:00
刘泉佳 15d6f736e5 feat: 金蝶锁单改1对1逐张调用并新增列表锁状态展示 2026-10-10 15:18:57 +08:00
b2894lxlx a4287d8b15 🐛 用户缓存反序列化失败时清理并回源,避免列表翻译姓名时报 500
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-10 14:28:31 +08:00
b2894lxlx 4e7193893f ✨ 组织与人员支持OA增量同步,并完善用户启停与性别空值
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-10 13:56:29 +08:00
weicw-dshsa 4fe0c8a968 ✨ 调度首页把司机已拒单的运单列为重新派单待处理,并在司机端让该运单脱离 2026-10-10 01:48:49 +08:00
b2894lxlx e20afc0d55 ✨ 合同结算币种贯通应收应付与结算,并完善合同编号与字段
合同结算币种写入应收应付与预结算;总单运费默认币种统一为 RMB;同步合同申请日期、主要内容、部门合同编号前缀及用印材料字典等能力。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-10 00:53:17 +08:00
weicw-dshsa b66984d3a1 ✨ 认证审核详情下发审核人与审核时间 2026-10-09 20:47:22 +08:00
刘泉佳 e08be9a297 feat: 正式结算单/开票申请同步金蝶后联带锁单,支持解锁回调与金蝶删单还原 2026-10-09 19:52:15 +08:00
刘泉佳 7855254a4f feat: 立项与合同HCS前端接入配套端点——C103-8合同特批发起/B103结果回传、C103-2/5附件代理、C101-1风险与C103-6/12主数据查询,合同推送高风险客商挂起待特批 2026-10-09 19:45:40 +08:00
b2894lxlx ef9eab737f ✨ 优化主数据校验与运单导入空值处理
电报略码改为选填且填写时唯一;用户支持账号姓名手机模糊查询;合同名称允许重复;项目情况说明扩至1000字;导入运单未填里程费用不再落库-1。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-09 17:07:56 +08:00
weicw-dshsa 7c488b6f09 ✨ 司机打完末位到货卸货签收节点且回单无需确认时自动完成运单 2026-10-08 09:24:30 +08:00
weicw-dshsa 2e5eae4d32 ✨ 打卡照片按类型最多传 9 张,照片列加宽为 text
- 节点打卡提交新增 photoItems(带显式类型),photos 原样保留供旧版小程序按下标回推
- 打卡照片是每个打卡节点必有的类型,不由过程配置决定,与各凭证类型各自最多 9 张
- 新版提交要求每个类型至少 1 张;旧版仍只要求至少 1 张,避免打断未升级的小程序
- 管理端订正只校验每类上限,不校验必填
- photos 由 varchar(2000) 改 text:36 张约 4000 字符,旧列宽约 17 张即溢出
- 基线建表脚本补 COLLATE=utf8mb4_0900_ai_ci(与本机库实际排序规则一致)
2026-10-07 16:49:19 +08:00
weicw-dshsa f9654fbe30 ✨ 节点卡片下发整单异常标记与相关异常列表,列表支持按运单精确过滤 2026-10-07 12:25:31 +08:00
weicw-dshsa c50a86d5c4 ✨ 运单详情打卡记录支持管理端编辑(含打卡状态)
新增 POST /waybill-manage/punch-record/save:按运单当前过程配置补录或修正
节点打卡与在途打卡,打卡状态也在可编辑之列。

- punched=false 即取消打卡:清除该节点全部打卡流水(时间轴上「未打卡」的判据
  就是没有流水);在途节点没有节点 key 可定位单条,故清空该运单全部在途流水
- 节点以当前过程配置为准回写 key/name,前端带旧值也不会写歪
- 编辑按字段显式更新:updateById 会跳过 null 字段,清空地址/货量/照片保存后不生效
- 编辑不改 exception_flag(与异常处置表绑定);管理端补录 driver_id 留空
- 凭证图按 [{type,url}] 回写,避免展示层按下标回推类型时换序串标
- 补 8 个服务单测 + 3 个 MockMvc 端点绑定测试
2026-10-06 04:40:43 +08:00
weicw-dshsa 19ddc445da 🐛 修复在途打卡绕过异常门禁:未了结异常落在在途之后时仍可打卡
在途的异常阻断此前按过程配置里节点的位置区间计算:异常节点及其后的节点不可打卡。
异常报在「卸货」这类排在在途之后的节点时,区间只有卸货、签收,在途被放行,
等于车越接近目的地越能报在途;而异常报在「装货」(在途之前)反而会锁住在途。

改为运单级判定:该运单只要存在未了结异常,在途就不可打卡,与异常归属哪个节点无关。
普通打卡节点仍按区间(异常所在节点及其后)阻断。判定集中在
WaybillProcessSupport.blockedNodeKeys,卡片禁用态与 /enroute/submit 的强制校验共用它。

异常落在非打卡节点上(接单/回单、或已从过程配置删掉的节点)时没有可跳转的具体异常,
故 blockedExceptionId 可能为空,卡片只显示不可打卡原因。
2026-10-06 03:17:25 +08:00
刘泉佳 d3f549bf42 feat: 金蝶票池选票回切镜像读(本地真分页+票号未命中回源+瘦身版全票池定时同步+结算认领确认重查闸门,下线实时游标透传)
- 选票两门面端点改查 blade_kingdee_invoice_pool 本地镜像:Mapper.xml 真分页+total 跳页,
  名称模糊/票种(invoice_type_code)/双税号/claimed/registered 三态过滤 SQL 直出,
  仅出可用票(available_amount>0 且 amount_use_status='0',本地化执行原 isUsablePoolRow 口径)
- 票号精确查本地未命中→窄查一次 A801-1 回源入库后重查,兜底增量窗口缝隙内当日新票
- 瘦身版同步任务回归:增量窗口分页拉取+镜像全列批量 upsert(无绑定/补偿/白名单/指纹),
  复用 KingdeeSyncLockSupport single-flight;手动端点 POST /invoice-receipt/sync-invoice-pool 供 bootstrap
- 镜像实体/表新增 available_amount/amount_use_status,fillInvoicePool 统一回填(存根/回源/同步同口径)
- 结算认领确认补齐服务端按票号重查闸门(与收票保存 persistMirrorFromRemote 同闸门),收票保存重查原样保留
- 删除 KingdeeInvoicePoolPageVO 游标分页契约与 PoolScanCursor/decorateUseFlags 等实时链路代码
2026-10-05 17:52:32 +08:00
weicw-dshsa 7c30ead839 ✨ 异常处置支持归属过程节点并新增打卡门禁
异常上报强制选择过程节点,节点归属写入 node_code / node_name;节点存在未了结
异常时,该节点及其后节点不可打卡(异常门禁),被拦节点仍可展开查看回填内容。

另新增顺序门禁:前置打卡节点未完成时后续节点不可打卡且不可展开;在途节点不受
顺序门禁约束,但仍受异常门禁约束。

配套:
- 过程配置「上传货量为是、货量类型为空」的脏配置订正为不采集货量
- 网关补充 /blade-resource/** 路由(图片上传,小程序打卡与异常上报照片均经此)
2026-10-05 15:10:24 +08:00
weicw-dshsa 7296a5af21 ✨ 异常处置跟进支持上传附件
跟进记录新增 attachments_json 列,存 [{name, url}] 形式的 JSON 数组。
跟进说明与附件至少填其一即可:只传附件时,follow_content 列为 NOT NULL,
故写入固定文案「已上传跟进附件」,列表按该文案展示。

建表脚本补 COLLATE:原先只写 CHARSET,落到 MySQL 8 服务器默认排序规则,
与库中实际的 utf8mb4_0900_ai_ci 不一致。
2026-10-05 01:09:33 +08:00
weicw-dshsa 8d35abd23e ✨ 异常处置新增编辑功能
运管员可订正已上报的异常内容:异常类型、异常原因、上报说明、现场照片。
车牌、项目、承运商、配载单号由上报时从运单回填,不开放编辑,避免与运单脱钩。

编辑不改动处置状态。状态只能经跟进与完成流转,因为运单详情、运单列表、
首页计数与待办四处都以 disposal_status IN (pending, processing) 判定未完成,
允许编辑改状态会让已结案的异常重新长出来,而那四处判定无从知晓。

每次编辑按字段逐项比对生成变更说明,写入一条跟进记录留痕。
变更说明会内嵌修改前后的原文,长文本字段一次编辑就可能超过跟进内容的
varchar(500) 上限,故按 500 截断。

Permission 表达式用 hasMenu('exception_disposal_edit'):
@PreAuth 的值由 SpEL 求值,root object 是 AuthFun,
写成裸字符串会被当作属性访问而在请求时抛错。
2026-10-05 00:54:08 +08:00
weicw-dshsa e3d860668b 📝 删除认证分支注释里的叙事性措辞
把「本改造的核心」「这正是要避免的事」「本次改造要保住的东西」这类
写作时的叙事从注释中去掉,只留读者需要的事实(反直觉的约束、坑、兼容性)。
测试的 @DisplayName 同步去掉「改造前/改造期间」等时间状语。

注释与文案调整,无逻辑改动;CertificationGateTest 等 35 个测试通过。
2026-10-04 23:55:22 +08:00
weicw-dshsa ec98954351 🔀 合并认证记录功能分支到 master
认证记录不可变快照数据模型、司机端提交与记录查询、管理端审核、
小程序证件 OCR 适配、接单可用性门槛(带开关可回退),含迁移脚本与单元测试。
2026-10-04 23:38:39 +08:00
weicw-dshsa 4fa6d4c430 🐛 个人认证通过后写回司机档案,并补齐资格证字段
个人认证通过时只切了生效指针与认证状态,证件内容一个字都没落到
blade_transport_driver:认证状态显示「已通过」,司机档案里却仍是
管理端当初录入的旧值(甚至为空),管理端与司机端各看各的。
车辆侧早有 applySnapshotToVehicle 做这件事,司机侧一直没有对应实现。

- 新增 applySnapshotToDriver,审核通过时与指针合并在同一次 UPDATE 写回。
  只搬司机申报的证件内容,不碰身份标识(姓名/身份证号,由管理端建档确定)
  与内部管理归属(司机类型/岗位/驾驶车辆/所属组织)。
- 快照缺失、解析失败或字段对不上时只跳过写回,不阻断审核:审核是独立于
  写回的业务动作,不该因为一份读不懂的快照而失败,否则历史快照对应的
  对象再也审不过去。
- PersonCertSubmitRequest 补 qualificationType / qualificationBack /
  qualificationValidStart / qualificationLongTerm 四个字段。
- qualificationUrl 改名为 qualificationFront,与司机档案列
  qualification_front 及管理端用词统一;改名前的记录存的仍是旧键,
  写回时回退读一次旧键,避免已填的封面页在审核通过时被丢掉。
- 补测试:证件内容写回、不覆盖身份字段、驳回不写回、历史快照跳过写回
  但仍照常通过审核。

qualificationValidStart 只进快照、不写档案:司机档案表没有对应的开始日期列,
管理端的「从业资格证有效期起」同样是只收不存。此处保持一致,不新增列。
2026-10-04 22:11:10 +08:00