最近客户提出需求,大致为A主子表的分录数据提交校验是否在B主子表的分录中,并给出校验提示。

分析:前端点击提交触发方法异步请求到后端,通过各种过滤条件获得B表分录的List集合,前端对response做处理,将A分录的数据与B比较。

大致代码:

Controller层

/**分录提交校验*/
    @GetMapping("/checkEntry/{companyNum}")
    public List<BdDeviceentry> checkEntry(@PathVariable String companyNum) {
        //通过组织名称查询装置列表
        BdDevice bdDevice = new BdDevice();
        bdDevice.setCompanyNum(companyNum);
        List<BdDevice> bdDeviceList = bdDeviceService.selectBdDeviceList(bdDevice);
        //创建一个新数组接收遍历的分录
        List<BdDeviceentry> allBdDeviceentryList = new ArrayList<>();
        //查询数据为空
        if (bdDeviceList == null || bdDeviceList.size() == 0) {
                return null;
        }else {
            //遍历所有父表的列表
            for (BdDevice device : bdDeviceList) {
                //通过id获得分录数据
                Long id = device.getId();
                BdDevice bdDevice1 = bdDeviceService.selectBdDeviceById(id);
                List<BdDeviceentry> bdDeviceentryList = bdDevice1.getBdDeviceentryList();
                //筛选分录数据(价格来源为原辅料价目表)
                for (BdDeviceentry bdDeviceentry : bdDeviceentryList) {
                    if ("2".equals(bdDeviceentry.getSourcePrice())) {
                        allBdDeviceentryList.add(bdDeviceentry);
                    }
                }

            }
        }
        return allBdDeviceentryList;
    }

js

//分录提交获得数据
export function checkEntry(companyNum){
  return request({
    url:'/analysisData/product/marketprice/checkEntry/' + companyNum,
    method:'get'
  })
}

vue

/** 提交按钮 */
    submitForm() {
        this.$refs["form"].validate(valid => {
          if (valid) {
            const prList = this.prMarketpriceentryList;
            const companyNum = this.form.companyNum;
            let existMaterialNums = [];
            let existMaterialNames = [];
            let notExistMaterialNums = [];
            let notExistMaterialNames = [];
            checkEntry(companyNum).then(response => {
              for (var i = 0; response.length > i; i++) {
                debugger;
                const existNums = response[i].materialNum;
                const existNames = response[i].materialName;
                existMaterialNums.push(existNums);
                existMaterialNames.push(existNames);
              }
              for (let j = 0; j < prList.length; j++) {
                const materialNum = prList[j].materialNum;
                const materialName = prList[j].materialName;
                if (!existMaterialNums.includes(materialNum)) {
                  notExistMaterialNums.push(materialNum);
                }
                if (!existMaterialNames.includes(materialName)) {
                  notExistMaterialNames.push(materialName);
                }
              }
              if (notExistMaterialNums.length > 0) {
                let message = "";
                message += "物料名称:" + notExistMaterialNames.join("、") + "在该公司下不存在请前往维护!";
                this.$modal.msgError(message);
                return false;
              } else {
                this.form.prMarketpriceentryList = this.prMarketpriceentryList;
                if (this.form.id != null && notExistMaterialNums.length < 1) {
                  updateMarketprice(this.form).then(response => {
                    this.$modal.msgSuccess("修改成功");
                    this.open = false;
                    this.getList();
                  });
                } else {
                  addMarketprice(this.form).then(response => {
                    this.$modal.msgSuccess("新增成功");
                    this.open = false;
                    this.getList();
                  });
                }
              }
            })
          }
        })
    },

实现效果:

如果有更好的方法,欢迎交流分享!!! 

Logo

快速构建 Web 应用程序

更多推荐