123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- 'use strict';
- /**
- * 清单设置 数据模型
- * @author LanJianRong
- * @date 2020/6/30
- * @version
- */
- module.exports = app => {
- class MaterialListGcl extends app.BaseService {
- /**
- * 构造函数
- *
- * @param {Object} ctx - egg全局变量
- * @return {void}
- */
- constructor(ctx) {
- super(ctx);
- this.tableName = 'material_list_gcl';
- }
- async setData(mid, data) {
- if (!this.ctx.tender) {
- throw '数据错误';
- }
- const transaction = await this.db.beginTransaction();
- try {
- const insertArray = [];
- for (const d of data) {
- insertArray.push({
- tid: this.ctx.tender.id,
- mid,
- order: d.order,
- gcl_id: d.gcl_id,
- mb_id: d.mb_id,
- quantity: d.quantity,
- expr: d.expr,
- old_quantity: d.quantity,
- old_expr: d.expr,
- });
- }
- if (insertArray.length > 0) await transaction.insert(this.tableName, insertArray);
- await transaction.update(this.ctx.service.material.tableName, { id: mid, is_new: 1 });
- await transaction.commit();
- return true;
- } catch (err) {
- console.log(err);
- await transaction.rollback();
- throw err;
- }
- }
- async insertOrDelGcl(transaction, insertGclList, removeGclList, mid) {
- if (insertGclList && insertGclList.length > 0) {
- for (const gcl of insertGclList) {
- gcl.tid = this.ctx.tender.id;
- gcl.mid = mid;
- }
- await transaction.insert(this.tableName, insertGclList);
- }
- if (removeGclList && removeGclList.length > 0) {
- for (const gcl of removeGclList) {
- await transaction.delete(this.tableName, { id: gcl.id });
- }
- }
- }
- async setNewOldData(transaction, tid, type = 'new2old') {
- if (type === 'new2old') {
- const sql = 'UPDATE ?? SET `old_quantity`=`quantity`, `old_expr`=`expr` WHERE tid=?';
- const sqlParam = [this.tableName, this.ctx.tender.id];
- return await transaction.query(sql, sqlParam);
- }
- const sql = 'UPDATE ?? SET `quantity`=`old_quantity`, `expr`=`old_expr` WHERE tid=?';
- const sqlParam = [this.tableName, this.ctx.tender.id];
- return await transaction.query(sql, sqlParam);
- }
- async setOldFromLast(transaction, tid, order) {
- if (order >= 1) {
- // 获取上一期的list值
- const materialInfo = await this.ctx.service.material.getDataByCondition({ tid, order });
- const materialList = await this.ctx.service.materialList.getAllDataByCondition({ where: { mid: materialInfo.id } });
- console.log(materialList);
- const lastMaterialGclList = this._.unionWith(materialList, function(item1, item2) {
- return item1.gcl_id === item2.gcl_id && item1.mb_id === item2.mb_id;
- });
- const updateArray = [];
- for (const lm of lastMaterialGclList) {
- const updateInfo = {
- row: {
- old_quantity: lm.quantity,
- old_expr: lm.expr,
- },
- where: {
- tid: this.ctx.tender.id,
- gcl_id: lm.gcl_id,
- mb_id: lm.mb_id,
- },
- };
- updateArray.push(updateInfo);
- }
- if (updateArray.length > 0) await transaction.updateRows(this.tableName, updateArray);
- }
- }
- }
- return MaterialListGcl;
- };
|