记一次外包被甲方毒打的经历

170 阅读3分钟

开端:接外包遇到个纸业公司的甲方,主要经营业务是生产客户diy的纸类产品。

愉快的开局

第一次找我是需要做一个报价web,由于他的计算公式比较复杂,并且单价不同且繁杂,所以需要一个程序替客服将算价格的事情做完。

学到的小技巧:

因为甲方有个报价单,类似于这样(只截取了很小一部分)

image.png

初始想法

看上去就是一个眼花缭乱,突出的就是一个烦,并且甲方需要可以更改这些其中的一个单价。如果我单纯的一个个录入数据库,他后续修改单价还得我帮他做个后台,这不得麻烦死。

于是我想到了

是不是可以读取EXCL表格,只需要记录下每个价格位于表格几行几列,用到的时候去读取就好了。如果需要修改,直接修改表格。这样就省去了很多事情。

其中用到了xlsx工具库,直接import然后解析报价文件


readExcel(e) {  
    //表格导入  
    // 引入工具库 import 也可以,前提是已经npm 下来了  
    // axios读取表格文件  
    this.axios.get('/pr.xlsx', {  
      responseType: 'arraybuffer',  
    }).then((res) => {  
        //解析表格  
        var XLSX = require("xlsx");  
        var vali = /\.(xls|xlsx)$/;  
        const Workbook = XLSX.read(res.data, {type: 'binary'}); // 通过XLSX读取出来得         到了一个 workdata 对象
        //将解析出的表格数据存入data  
        this.test = Workbook.Sheets.Sheet1  
    })  
}

然后直接通过test[行列]读取价格

挺简单一件事的,三下五除二就做完了,虽然使用中时不时会有些计算bug,但基本很快就改完了。 第一次合作就这么结束了。

第二次合作

因为第一次沟通很愉快,并且甲方认为我效率很高,所以他直接找到我做下一个需求:

一个图片编辑上传拼版小程序

大概流程为:选择产品属性->选择单双面->选择模板->上传图片->后台将一张张小图片拼接到一张空白大图上以供直接打印裁剪

image.png image.png

最后处理后的文件是这样的

image.png

一开始开发不能说简单吧,倒也在能力范围内进行着。中途因为一开始沟通没明确,还改了好几次逻辑,但无论如何还是20天做完了,然后噩梦开始了(我的问题)。

问题

程序处理后的文件频繁出现这种问题(粉色的是定位块可以忽略)。按道理这张图片应该是拼满了图片的,但是莫名其妙的会有空白的。

这个问题折磨了我快一个月,尝试了各种办法,各种日志,关键日志也不报错!

image.png

找了很久没有发现是什么问题,一开始怀疑是后端的问题,改了成了如下逻辑:

简述一下我后端的逻辑,因为图片较多。前端发送图片时告诉后端这一个订单有多少张图片,后端拿到请求会先将图片文件存下来,等到数量足够了之后,才会开始处理拼版任务。

空白的情况消失了,但是新的问题又来了:直接一张图片都不生成了。

记录了日志之后,发现请求会莫名其妙丢失,因为是一张图一张图发请求传过来的,莫名其妙就会丢失一个请求少一张图,后端没有收到足够数量的图片当然不会工作了。

搞了很久也不知道怎么解决请求丢失问题,最后用上了网络错误大法。 之前是前端发送完请求就不管了,现在改成了前端发完请求必须在那等着,在那loading,直到最后一张图片处理完返回成功响应报文才可以退出,如果一直收不到就告诉你:网络错误,请重试。

您猜怎么着,这之后再也没有问题了。