import { default as BaseController } from "../baseController";
|
import { Post } from "egg-shell-decorators";
|
import { BaseForklift } from "../../entity/basicInfo/workshop/baseForklift";
|
import { BaseEmptyEquipmentReturn } from "../../entity/outbound/sale/baseEmptyEquipmentReturn";
|
import { BaseDestination } from "../../entity/basicInfo/workshop/baseDestination";
|
import { BasePlate } from "../../entity/basicInfo/base/basePlate";
|
import { BaseEmptyEquipmentReturnList } from "../../entity/outbound/sale/baseEmptyEquipmentReturnList";
|
import { Not, Like } from "typeorm";
|
// import { BaseEmptyEquipment } from '../../entity/inbound/purchase/baseEmptyEquipment';
|
|
/**
|
* 空器具出库
|
*/
|
export default class quipmentReturnController extends BaseController {
|
//#region 空器具出库详情
|
@Post()
|
public async save() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
let userInfo = await ctx.helper.userInfo();
|
try {
|
if (!body.destination_Id) {
|
this.info.result = false;
|
this.info.msg = "所在工位不能为空!";
|
ctx.body = this.info;
|
return;
|
}
|
let destInfo = await this.dbRead.findOne(BaseDestination, body.destination_Id);
|
if (!destInfo) {
|
this.info.result = false;
|
this.info.msg = "所在工位不能为空!";
|
ctx.body = this.info;
|
return;
|
}
|
if (!body.storage_Id) {
|
this.info.result = false;
|
this.info.msg = "仓库不能为空!";
|
ctx.body = this.info;
|
return;
|
}
|
|
if (!body.totalQuantity) {
|
this.info.result = false;
|
this.info.msg = "数量不能为空!";
|
ctx.body = this.info;
|
return;
|
}
|
|
let quipmentReturn = new BaseEmptyEquipmentReturn();
|
quipmentReturn.emptyEquipmentReturnCode = await this.ctx.service.common.getCodeRegular(1807);
|
quipmentReturn.orderType = "空器具回库";
|
quipmentReturn.statusText = "新建";
|
quipmentReturn.totalQuantity = body.totalQuantity;
|
quipmentReturn.destination_Id = destInfo.destination_Id;
|
quipmentReturn.destinationName = destInfo.destinationName;
|
quipmentReturn.storage_Id = body.storage_Id;
|
quipmentReturn.storageName = body.storageName;
|
quipmentReturn.consignor_Id = 30;
|
quipmentReturn.consignorCode = "GX30";
|
quipmentReturn.consignorName = "广州西门子";
|
|
// 获取到叉车为空闲中并选中目的地和叉车目的地相同的叉车
|
let forklift = await this.dbRead.findOne(BaseForklift, {
|
forkliftStatus: "空闲中",
|
userProduct_Id: userInfo.userProduct_Id,
|
destination_Id: Like("%" + this.body.destination_Id + "%")
|
});
|
|
if (forklift) {
|
// 已分配的几号叉车
|
quipmentReturn.allocatedForklift = forklift.forkliftName;
|
// 叉车司机
|
quipmentReturn.relationDrivers = forklift.relationDrivers;
|
}
|
|
quipmentReturn.createDate = new Date();
|
quipmentReturn.createID = userInfo.user_Id;
|
quipmentReturn.creator = userInfo.userTrueName;
|
await this.setAccountInfo(quipmentReturn);
|
await this.dbWrite.save(quipmentReturn);
|
if (forklift) {
|
await this.dbWrite.update(
|
BaseForklift,
|
{
|
forklift_Id: forklift.forklift_Id
|
},
|
{
|
forkliftStatus: "任务中"
|
}
|
);
|
}
|
|
this.info.msg = "保存成功";
|
this.info.result = true;
|
} catch (error) {
|
this.info.result = false;
|
this.info.msg = "错误:" + error.message;
|
}
|
ctx.body = this.info;
|
}
|
//#endregion
|
|
//#region scanSave 扫描保存数据
|
@Post()
|
public async scanSave() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
let userInfo = await ctx.helper.userInfo();
|
let details = []; // 记录明细保存的数据
|
let masterData = body.masterData;
|
let detailList = body.detailList;
|
|
try {
|
if (!Array.isArray(detailList) || !detailList.length) {
|
this.info.result = false;
|
this.info.msg = `明细不能为空!`;
|
this.ctx.body = this.info;
|
return;
|
}
|
if (!masterData.storage_Id) {
|
this.info.result = false;
|
this.info.msg = `仓库不能为空`;
|
ctx.body = this.info;
|
return;
|
}
|
|
let plateInfo = await this.dbRead.findOne(BasePlate, {
|
plateCode: masterData.plateCode
|
});
|
if (!plateInfo) {
|
this.info.result = false;
|
this.info.msg = `${masterData.plateCode}器具编号不存在`;
|
ctx.body = this.info;
|
return;
|
}
|
|
// 判断是否重复创建
|
for (let item of detailList) {
|
let where = {
|
plateCode: item.plateCode,
|
returnStatus: "新建"
|
};
|
// 编辑时排除自己
|
if (masterData.emptyEquipmentReturn_Id) {
|
where["emptyEquipmentReturn_Id"] = Not(masterData.emptyEquipmentReturn_Id);
|
}
|
let detailInfo = await this.dbRead.findOne(BaseEmptyEquipmentReturnList, where);
|
if (detailInfo) {
|
let mainInfo = await this.dbRead.findOne(BaseEmptyEquipmentReturn, detailInfo.emptyEquipmentReturn_Id);
|
this.info.result = false;
|
this.info.msg = `器具编号${item.plateCode}已在${mainInfo.emptyEquipmentReturnCode}中创建,不可重复创建!`;
|
this.ctx.body = this.info;
|
return;
|
}
|
}
|
|
let mainInfo = new BaseEmptyEquipmentReturn(); // 主表数据
|
// 必须做这边操作,编辑时才执行更新操作
|
mainInfo = Object.assign(mainInfo, masterData);
|
// 新建时,生成单据编号
|
if (!mainInfo.emptyEquipmentReturn_Id) {
|
let code = await ctx.service.common.getCodeRegular(1807);
|
mainInfo.emptyEquipmentReturnCode = code;
|
}
|
|
// 状态默认为新建
|
if (!mainInfo.statusText) {
|
mainInfo.statusText = "新建";
|
}
|
mainInfo.orderType = "空器具回库";
|
mainInfo.storage_Id = masterData.storage_Id;
|
mainInfo.storageName = masterData.storageName;
|
mainInfo.createDate = new Date();
|
mainInfo.createID = userInfo.user_Id;
|
mainInfo.creator = userInfo.userTrueName;
|
mainInfo.consignor_Id = 30;
|
mainInfo.consignorCode = "GX30";
|
mainInfo.consignorName = "广州西门子";
|
await this.setAccountInfo(mainInfo);
|
await this.dbWrite.save(mainInfo); // 保存主表信息,编辑和添加
|
|
for (let item of detailList) {
|
let detailInfo = new BaseEmptyEquipmentReturnList();
|
// 必须做这边操作,编辑时才执行更新操作
|
detailInfo = Object.assign(detailInfo, item);
|
|
detailInfo.emptyEquipmentReturn_Id = mainInfo.emptyEquipmentReturn_Id;
|
detailInfo.productCode = item.plateCode;
|
detailInfo.product_Id = 0;
|
detailInfo.productName = item.plateName;
|
detailInfo.plateCode = item.plateCode;
|
detailInfo.plateType = item.plateType;
|
detailInfo.returnStatus = "新建";
|
|
await this.setAccountInfo(detailInfo);
|
await this.dbWrite.save(detailInfo); // 保存明细数据
|
details.push(detailInfo);
|
}
|
|
this.info.data = mainInfo;
|
this.info.data2 = details;
|
this.info.result = true;
|
this.info.msg = "数据保存成功";
|
} catch (error) {
|
this.info.result = false;
|
this.info.msg = "错误:" + error.message;
|
}
|
ctx.body = this.info;
|
}
|
//#endregion
|
}
|