当前位置: 首页 > news >正文

中建建筑网站网站托管免费

中建建筑网站,网站托管免费,西安网站建设哪些公司好,免费看今天开始做女神的网站背景介绍 想看干货直接看最后的总结#xff0c;其他流水账可以不看#xff0c;也可以当故事看。 7月底我司某产品因故需要拉齐现场版本#xff0c;其中某地版本较低#xff0c;且曾经做过一些定制内容#xff0c;升级前也未识别该情况#xff0c;导致后续持续一个月不断…背景介绍 想看干货直接看最后的总结其他流水账可以不看也可以当故事看。 7月底我司某产品因故需要拉齐现场版本其中某地版本较低且曾经做过一些定制内容升级前也未识别该情况导致后续持续一个月不断地暴露新问题。因为涉及研发团队更换交接不充分代码管理不规范等原因导致的部分定制需求代码升级后丢失的问题暂且不表今天就来说一下因模板识别错误导致100多条业务数据的核心json数据混乱最终导致客户无法正常基于json要素生成word的解决方案主要是想传递一下json矫正场景的一个排查过程给自己做个记录供下次遇到类似问题快速学习另外也给其他有类似诉求的人一个参考思路。 过程 以下服务之间的关系存在精简不要太在意主要看思路。 问题 有这么A、B、C、D四个服务 A服务互联网部署可以让用户导入基于指定模板填充的excel内容然后把excel的内容经过各种关系的组装最终形成一个json还有很多其他固定的业务字段有内容本文主要讲解针对该字段的处理存入数据库的业务表中会有摆渡机制将同构的数据摆渡到内网的B服务中。B服务A服务在内网的镜像数据与A服务基本保持一致。C服务基于B服务的一个基础应用可将B服务中的json元素进行业务加工并提供给业务层应用使用。D服务用户可见的应用可以利用C服务生成指定格式的word文档。 同时A服务中又针对不同业务场景提供了多套不同的excel模板互联网用户根据需要使用对应模板填充不同业务数据内网应用会根据模板类型标记来动态解析json数据并逐层传递至用户层应用。 此次升级后A服务中引入了一个缺陷所有的excel模板均会按照相同的模板类型A来解析导致用户一直在用的模板类型B核心数据丢失进一步导致用户层应用无法正常使用。 虽然我们及时好像耗时4天找到了问题是因为新研发改错了代码。毕竟新团队也不熟悉代码逻辑也比较复杂所以综合分析时间也还能接受修复了该缺陷但这几天已经产生了100多条有效数据还有几十条我们自己的测试数据如何矫正成了难题。 解决思路1让用户搞 因数据链路存在状态所以研发提出直接驳回数据让用户在互联网重新操作一遍或者系统也提供了逐个记录编辑的功能让用户把解析错误的数据重新手工填写一下是否可行 这俩想法都不可行手工填写的话100多条数据每条数据几十个信息项甚至每条数据里面可能还有几十条子业务数据让用户手工逐个矫正我准备跟用户说这个解决方法之前我都得扇自己两巴掌最好带着掌印才好面对面跟用户说这个方案否则我怕他们打我。 退回的话虽然也给用户增加了不必要的工作量但听起来还行只是问题数据已经产生了将近一个月了数据链路流转到哪儿了随机抽查了几个都已经审核了没法修改了所以让用户来搞的思路不可行了。 解决思路2我们来搞 既然有问题的只是json数据那我们自己再重新导入一下还好我机智感觉到最后可能需要矫正发现问题不久就找多个用户要来了他们的excel然后根据规则把新旧数据做个唯一映射最后把解析正确的json更新到原来错误的字段里面不就可以了 说干就干我登录互联网系统把当时留存的excel导入系统但不提交这样就不会摆渡到内网用完即可删除然后仅把json数据相关的表数据筛出来生成insert语句导入内网毕竟最终影响用户的是内网。 然后到这一步就卡住了研发说映射条件得想想想了一段时间告诉我json中有一个元素存储的是人员名字数组取第一个应该能对得上但脚本怎么写呢上网查吧。 假设新导入的表为tb1_newdata原业务表为tb1json字段名为j_json正确的json字段值为下列内容实际内容复杂很多。 附加条件每次只允许申报一种非固定支出的耗材种类且这次出问题的记录里面没有重名的情况重名的会复杂一些目前想着是把能匹配上的匹配上重名的大不了手工找映射关系增加虚拟字段存映射ID都行 {学校编码: 京0156,规模: 大型,市/区: 海淀,法人: 曾书书,班级: {班级数: 50,班级列表: [{编号: 一零一,名称: 一年级一班}]},年度预算: {预算年度: 2023,预算申报日期: 2023-09-30,申报负责人: [{随机ID: 011234,姓名: 曾书书}],申报组成员: [{随机ID: 011234,姓名: 曾书书}, {随机ID: 011214,姓名: 李老师},{随机ID: 015234,姓名: 王老师}],固定支出: {薪资: 1000,授权费: 5000},非固定支出: {本次申报类型: 实验耗材,申报日期: 2023-08-26,耗材: [{办公用品: {电子设备更新: 0,上年压款结算: 0,汇总日期: ,汇总人: }},{ 体育用品: {教学设备更新: 0,内训: 0,外训: 0,汇总日期: ,汇总人: }},{实验耗材: { // 历史数据这里整组为空当成“办公用品来解析了”上年预算: 6000,上年决算: 6300,本年预算: 6500,汇总日期: 2023-08-24,汇总人: 张三,大额清单: [{序号: 1,商品A: 1000,负责人: 李四},{序号: 2,商品B: 1500,负责人: 王五},{序号: 3,商品A: 800,负责人: 马六},]}}]}} }先备份原表数据很重要哦有问题可以随时恢复 create table tb1_bak_20230826 as select * from tb1 where dt_createtime between xxx and xxx; -- 这里其实推荐备份全表实验表再条件备份因为我对自己有信心所以这里就偷懒了再备份一份原表数据用于试验更新结果随时会重建 create table tb1_old as select * from tb1_bak_20230826;初步书写映射关系 -- 1、先确认是否可以正确查询结果 select j_json-年度预算-固定支出 from tb1_old limit 1; -- 正确输出“薪资”、“授权费”等 -- 2、确认数组内容是否可正确查询 select j_json-年度预算-非固定支出-0 from tb1_old limit 1; -- 正确输出耗材整组内容 -- 3、连表查询关联的结果总数 select count(*) from tb1_newdata t1 inner join tb1_old t2 on t1.j_json-年度预算-申报组成员-0-姓名 t2.j_json-年度预算-申报组成员-0-姓名; -- 应该输出128实际结果只有5条。为啥与预期差这么多 -- 4、根据姓名先检索对应ID select c_bh from tb1_newdata where j_json-年度预算-申报组成员::text like %曾书书%; -- 记录下来ID并用同样的方式确认旧表里对应记录ID -- 5、分别更换表名使用脚本确认条件字段实际结果 select j_json-年度预算-申报组成员-0-姓名 from tb1_newdata where c_bh 上面的结果; -- 原因是数组实际内容没有变更只是位置发生了变化导致第0个元素不是同一个人了既然相等不起作用那么我们用包含来判断 -- 网上查了下 和 可以用于判断指定元素是否存在于指定数组中那么开始试验 -- 1、第一次尝试 select * from tb1_newdata t1 inner join tb1_old t2 on t1.j_json-年度预算-申报组成员 t2.j_json-年度预算-申报组成员-0; -- 执行直接报错提示operator does not exists: boolean - unknown -- 2、将随机某条结果结果直接拿出来检查确认是否条件数据提取错误 select j_json-年度预算-申报组成员, j_json-年度预算-申报组成员-0 from tb1_newdata where c_bh xxx; -- 结果看起来没啥问题前者是一个数组后者是一组元素 -- 3、脱离业务表单独验证条件是否成立 select [{随机ID:011234,姓名:曾书书},{随机ID:011214,姓名:李老师},{随机ID:015234,姓名:王老师}]::jsonb {随机ID:011234,姓名:曾书书}::jsonb; -- 结果是f这为啥不匹配奇哉怪哉脑瓜疼哉 -- 4、不知道怎么突然想起来前者是数组后者不是数组试试加上[] select [{随机ID:011234,姓名:曾书书},{随机ID:011214,姓名:李老师},{随机ID:015234,姓名:王老师}]::jsonb [{随机ID:011234,姓名:曾书书}]::jsonb; -- 嘿您猜怎么着那叫一个地道不对串场了不好意思。 -- 结果竟然由f变成了t。奇哉怪哉脑瓜疼哉 -- 虽然但是我也不想再前后拼接字符串来匹配何况里面还有个随机的人员ID两次导入的相同人也是变化的此路不通那有返回数组指定元素位置的函数吗 很可惜我没找到…可能是我翻阅的资料还不够多也可能是这种函数投入产出比不高厂家没做 解决思路3还是我们来搞 这…还能咋搞总不能写个代码逐个解析成结构化数据再匹配吧这也太麻烦了让人家用户手工重新导入的感觉估计会比我这时候的感觉更糟糕本来准备excel就费劲还有一堆其他事儿你还让我因为非我导致的原因返工。 那就继续分析是否还有其他数据项可利用吧。 全局搜索“曾书书” 还是只搜到这一组。难道就没有其他地方有这个标记了再一看哦记事本没有循环查找功能光标就在这一组这里 光标挪到最上面重新查找 盲生他发现了华点原来还有一组“申报负责人”可以用里面的这个“张老师”也是可以唯一标记问题记录的实际业务比举例复杂确实可以当做唯一标记举例并没有那么严谨 脚本验证 -- 1、数据匹配这就简单多了 select count(*) from tb1_newdata t1 inner join tb1_old t2 on t1.j_json-年度预算-申报负责人-姓名 t2.j_json-年度预算-申报负责人-姓名; -- 结果为128数据量对上了。 -- 脚本的一小步我处理问题的一大步剩下的就是替换了谷歌了一下找到一个函数jsonb_set -- 2、确认将要更新的内容是否正确 select jsonb_set(t2.j_json, 年度预算,非固定支出,耗材,实验耗材, t1.j_json-年度预算-非固定支出-耗材-实验耗材), t1.j_json-年度预算-非固定支出-耗材-实验耗材, t2.j_json-年度预算-非固定支出-耗材-实验耗材 from tb1_newdata t1 inner join tb1_old t2 on t1.j_json-年度预算-申报负责人-姓名 t2.j_json-年度预算-申报负责人-姓名; -- 比对结果一切正常 -- 3、书写更新脚本 update tb1_old set j_json tmp.j_json from ( select jsonb_set(t2.j_json, 年度预算,非固定支出,耗材,实验耗材, t1.j_json-年度预算-非固定支出-耗材-实验耗材), t2.c_bh from tb1_newdata t1 inner join tb1_old t2 on t1.j_json-年度预算-申报负责人-姓名 t2.j_json-年度预算-申报负责人-姓名 ) tmp on tb1_old.c_bh tmp.c_bh; -- 受影响行数128行 -- 4、随机抽查验证结果为了更直观及快捷的比对又搜了美化json结果的函数,jsonb_pretty select jsonb_pretty(j_json) from tb1_old where c_bh xxx; -- 结果正确哇的一声就哭了但截至目前只是成功矫正了B服务C服务需要删掉错误数据重新再怎么触发一下就会自动同步最新数据这128条数据有可能需要我手工逐个操作一遍又会是一个大工程。研发已经下班啦我CC也没搜到当时怎么重新同步的只能再等研发支持啦写个笔记就可以回去睡觉啦。 总结 这次我学到了什么呢 -加数字代表取数组的第n个元素-加文本代表取json的指定对象结果也是json格式-与-的用法一致只是前者结果是文本后者依然是json对象 jsonb_pretty函数可以美化json结果注意结果不要直接放到记事本里面放写字板或其他文本编辑工具记事本展示结果 jsonb_set函数可以置换json中的指定元素 操作符是判断左侧元素数组中是否包含右侧元素 操作符是判断右侧元素数组中是否包含左侧元素。左右两侧均可放多个元素比较且不区分位置全部包含即为真否则为假但需要判断的那个元素貌似必须是以数组的形式书写否则结果永远为假 最后说两句 最后团队交接一定不要太匆忙给一些原团队盘点以及新团队学习的时间呀而且新团队刚接手时可得保障产出质量不然整体成本增加不说客户满意度还会下降还会打击现场人员的升级积极性得不偿失呀 最后的最后其实这篇文章干货不多例如没找到新的映射关系的话当前的知识储备针对当前问题依然是无解的最终可能还得写程序搞定但运气好找到了唯一映射运气也是实力的一部分都要加油哦 官方手册http://postgres.cn/docs/11/functions-json.html
http://www.dnsts.com.cn/news/64850.html

相关文章:

  • o2o网站建设方案在建设银行网站能换美元吗
  • 加快建设公司新版网站wordpress 评论提醒邮件插件
  • 河池市城乡住房建设厅网站春雨直播视频观看完整版
  • 厂家营销型网站建设同一个公司可以做几个网站吗
  • 计算机网站建设相关的书籍首都产业建设集团网站
  • 个人如何做短视频网站福建省建设集团有限公司官网
  • 森网站建设seo培训学校排名
  • 查建设公司年度保证金网站贵阳网站建设 赶集
  • 上海品牌网站建设公司排名百度图片搜索
  • 外贸网站推广哪家好桂林北站是哪个区
  • 免费网站制作平台下载健康门户网站建设
  • 海南建设银行招聘网站本地网站构建
  • 用html网站登录界面怎么做网络营销相关信息
  • 广西汽车网网站建设wordpress模板自适应
  • 制作网站需要哪些素材锦州电脑网站建设
  • 南阳企业网站推广方法网站建设的毕业设计选题管理系统
  • 餐饮网站建设规划书wordpress mnews
  • 班级网站 建设模板wordpress标签颜色
  • 有哪些可以在网上做兼职的网站成都做小程序的开发公司
  • 微商城手机网站模板南宁有名的网络公司
  • wordpress幻灯片回收站在哪天河区pc端网站建设
  • 专业做网站 郑州wordpress出现自动投稿
  • 苏州设计网页网站好网页微信怎么登录
  • 企业员工管理系统优化防控工作的二十条措施
  • 网站建立的公司小皮怎么创建网站
  • 机关单位 网站建设方案策划书关键词优化外包
  • 门户网站的概念上传视频网站开发
  • 阜南县城乡建设局官方网站医疗网站的运营
  • 江门网站设计华企立方湖北省住房城乡建设厅网站查
  • 响应式网站 手机站美食软文300字