import BaseController from "../baseController";
|
import { Post } from "egg-shell-decorators";
|
import { MoreThan, Not, In } from "typeorm";
|
import { vBaseProductPosition } from "../../entity/storage/product/vBaseProductPosition";
|
import { BasePositionPrint } from "../../entity/storage/product/basePositionPrint";
|
// import { siemensApi } from "../../public/webServiceHelper";
|
import { TaskQueue } from "../../entity/basicInfo/base/taskQueue";
|
import { BaseEquipment } from "../../entity/basicInfo/base/baseEquipment";
|
import { PurchaseShelve } from "../../entity/inbound/purchase/purchaseShelve";
|
import { BasePlate } from "../../entity/basicInfo/base/basePlate";
|
|
/**
|
* 上架 - 码盘操作
|
*/
|
export default class ShelveStackingScanController extends BaseController {
|
//#region 上架码盘扫描-获取物料信息
|
// @Post()
|
// public async getBufferProductInfo() {
|
// let { ctx } = this;
|
// let body = ctx.request.body;
|
// let storage_Id = body.storage_Id; // 仓库ID
|
// let productCode = body.productCode; // 条码
|
// let positionName = body.positionName; // 货位
|
// if (!storage_Id) {
|
// this.info.result = false;
|
// this.info.msg = "请正确选择仓库!";
|
// this.ctx.body = this.info;
|
// return;
|
// }
|
// if (!productCode) {
|
// this.info.result = false;
|
// this.info.msg = "条码不能为空!";
|
// this.ctx.body = this.info;
|
// return;
|
// }
|
// if (!positionName) {
|
// this.info.result = false;
|
// this.info.msg = "货位不能为空!";
|
// this.ctx.body = this.info;
|
// return;
|
// }
|
// try {
|
// this.info = await this.ctx.service.inbound.shelveStackingScan.getData(storage_Id, positionName, productCode);
|
// if (!this.info.result) {
|
// this.ctx.body = this.info;
|
// return;
|
// }
|
// } catch (error) {
|
// this.info.result = false;
|
// this.info.msg = "错误:" + error.message;
|
// }
|
// this.ctx.body = this.info;
|
// }
|
//#endregion
|
|
//#region 扫描获取数据
|
@Post()
|
public async getBufferProductInfo() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
let userInfo = await ctx.helper.userInfo();
|
try {
|
let datalist = await this.dbRead.find(BasePositionPrint, {
|
userProduct_Id: userInfo.userProduct_Id,
|
extendField06: body.extendField06,
|
quantity: MoreThan(0)
|
});
|
if (datalist.length === 0) {
|
this.info.result = false;
|
this.info.msg = "条码不存在!";
|
this.ctx.body = this.info;
|
return;
|
}
|
// 根据条码值找到打印记录信息
|
// let dataPrint = await this.dbRead.findOne(BasePositionPrint, {
|
// extendField06: body.extendField06,
|
// quantity: MoreThan(0)
|
// });
|
// // 根据po单号和
|
// let dataPrintPosition = await this.dbRead.find(vBaseProductPosition, {
|
// poCode: dataPrint.poCode,
|
// productCode: dataPrint.productCode
|
// });
|
// let unPositionPrint = 0;
|
// for (let item of dataPrintPosition) {
|
// unPositionPrint += item.productStorage;
|
// }
|
// let countPrints = 0;
|
// countPrints = dataPrint.quantity + unPositionPrint;
|
// for (let item of datalist) {
|
// item.productStorage = countPrints;
|
// }
|
if (datalist.length) {
|
this.info.data = datalist;
|
// this.info.countPrint = countPrints;
|
this.info.result = true;
|
} else {
|
this.info.result = false;
|
this.info.msg = `${body.extendField06}不存在`;
|
}
|
} catch (error) {
|
this.info.result = false;
|
this.info.msg = "错误:" + error.message;
|
}
|
ctx.body = this.info;
|
}
|
//#endregion
|
|
//#region 码盘扫描- 码盘扫描入库
|
@Post()
|
public async inStackingSave() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
let datalist = body.datalist; // 码盘数据
|
// let plateType = body.plateType;
|
// let plateHeight = body.plateHeight;
|
let percentAge = body.percentAge;
|
let plateCode = body.plateCode;
|
// let productPosition_Id = body.productPosition_Id;
|
|
let taskPlate = await this.dbRead.find(BasePlate, {
|
plateCode: body.plateCode
|
});
|
if (taskPlate.length === 0) {
|
this.info.result = false;
|
this.info.msg = "托盘"+body.plateCode+"不存在!";
|
this.ctx.body = this.info;
|
return;
|
}
|
let plateData = await this.dbRead.find(vBaseProductPosition, {
|
plateCode: body.plateCode
|
});
|
let taskQueue = await this.dbRead.find(TaskQueue, {
|
plateCode: body.plateCode,
|
taskStatus: "未下发"
|
});
|
let taskQueue2 = await this.dbRead.find(TaskQueue, {
|
plateCode: body.plateCode,
|
taskStatus: "已下发"
|
});
|
let taskQueue3 = await this.dbRead.find(TaskQueue, {
|
plateCode: body.plateCode,
|
taskStatus: "下发中"
|
});
|
let taskShelve = await this.dbRead.find(PurchaseShelve, {
|
plateCode: body.plateCode,
|
onShelveStatus: "待上架"
|
});
|
let taskShelves = await this.dbRead.find(PurchaseShelve, {
|
plateCode: body.plateCode,
|
onShelveStatus: "上架中"
|
});
|
//拆分下面的提示,让提示更清晰一点 【EditBy shaocx,2022-08-29】
|
/*
|
if (plateData.length > 0 || taskQueue.length > 0 || taskShelve.length > 0 || taskShelves.length > 0) {
|
this.info.result = false;
|
this.info.msg = "托盘已存在!";
|
this.ctx.body = this.info;
|
return;
|
}
|
//*/
|
if (plateData.length > 0 && body.shelveType==='码盘上架') {
|
this.info.result = false;
|
this.info.msg = "(码盘上架)托盘"+body.plateCode+"已经在库存里存在!";
|
this.ctx.body = this.info;
|
return;
|
}
|
debugger
|
//拼盘上架增加 对 收货暂存区的校验 【Editby shaocx,2024-09-12】
|
if (plateData.length > 0 && (plateData[0].positionName!=='' && plateData[0].positionName!=='收货暂存区') && body.shelveType==='拼盘上架') {
|
//if (plateData.length > 0 && plateData[0].positionName!=='' && body.shelveType==='拼盘上架') {
|
this.info.result = false;
|
this.info.msg = "(拼盘上架)托盘"+body.plateCode+"已经在库存里存在!";
|
this.ctx.body = this.info;
|
return;
|
}
|
if (taskQueue.length > 0 ) {
|
this.info.result = false;
|
this.info.msg = "托盘"+body.plateCode+"存在于任务状态是'未下发'的任务中!";
|
this.ctx.body = this.info;
|
return;
|
}
|
if (taskQueue2.length > 0 ) {
|
this.info.result = false;
|
this.info.msg = "托盘"+body.plateCode+"存在于任务状态是'已下发'的任务中!";
|
this.ctx.body = this.info;
|
return;
|
}
|
if (taskQueue3.length > 0 ) {
|
this.info.result = false;
|
this.info.msg = "托盘"+body.plateCode+"存在于任务状态是'下发中'的任务中!";
|
this.ctx.body = this.info;
|
return;
|
}
|
if (taskShelve.length > 0 ) {
|
this.info.result = false;
|
this.info.msg = "托盘"+body.plateCode+"存在于上架状态是'待上架'的码盘上架任务中!";
|
this.ctx.body = this.info;
|
return;
|
}
|
if (taskShelves.length > 0) {
|
this.info.result = false;
|
this.info.msg = "托盘"+body.plateCode+"存在于上架状态是'上架中'的码盘上架任务中!";
|
this.ctx.body = this.info;
|
return;
|
}
|
try {
|
// siemensApi.domainUrl = this.app.config.domainUrl;
|
// const subtractQtyResult = await siemensApi.subtractQty({
|
// detailList: body.detailList
|
// });
|
// let ssss = subtractQtyResult;
|
// if (ssss !== true) {
|
// this.info.msg = "请打开后台服务";
|
// ctx.body = this.info;
|
// return;
|
// }
|
this.info = await this.ctx.service.inbound.shelveStackingScan.billEnterSave(datalist, plateCode, percentAge, body.shelveType);
|
if (!this.info.result) {
|
this.ctx.body = this.info;
|
return;
|
}
|
} catch (error) {
|
this.info.result = false;
|
this.info.msg = "错误:" + error.message;
|
}
|
this.ctx.body = this.info;
|
}
|
//#endregion
|
|
//#region根据物料编号查询库存
|
@Post()
|
public async getProduct() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
let userInfo = await ctx.helper.userInfo();
|
try {
|
let datalist = await this.dbRead.find(vBaseProductPosition, {
|
userProduct_Id: userInfo.userProduct_Id,
|
productCode: body.productCode,
|
productStorage: MoreThan(0),
|
positionType: 1
|
});
|
if (datalist.length) {
|
this.info.data = datalist;
|
this.info.result = true;
|
} else {
|
this.info.result = false;
|
this.info.msg = `${body.plateCode}不存在`;
|
}
|
} catch (error) {
|
this.info.result = false;
|
this.info.msg = "错误:" + error.message;
|
}
|
ctx.body = this.info;
|
}
|
//#endregion
|
//#region显示所有常规货位,库存量大于0的库存
|
@Post()
|
public async getPosition() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
let userInfo = await ctx.helper.userInfo();
|
try {
|
let datalist = await this.dbRead.find(vBaseProductPosition, {
|
userProduct_Id: userInfo.userProduct_Id,
|
productStorage: MoreThan(0), // 库存量大于0
|
positionType: 1, // 常规货位
|
extendField01: Not(In([1]))
|
});
|
if (datalist.length) {
|
this.info.data = datalist;
|
this.info.result = true;
|
} else {
|
this.info.result = false;
|
this.info.msg = `${body.plateCode}不存在`;
|
}
|
} catch (error) {
|
this.info.result = false;
|
this.info.msg = "错误:" + error.message;
|
}
|
ctx.body = this.info;
|
}
|
//#endregion
|
|
//#region判断堆垛机是否禁用
|
@Post()
|
public async isEquipment() {
|
let { ctx } = this;
|
let userInfo = await ctx.helper.userInfo();
|
try {
|
let datalist = await this.dbRead.find(BaseEquipment, {
|
userProduct_Id: userInfo.userProduct_Id,
|
deviceType: "堆垛机",
|
enable: 1,
|
deviceCode: "2"
|
});
|
if (datalist.length) {
|
this.info.result = true;
|
} else {
|
this.info.result = false;
|
this.info.msg = `2号堆垛机已禁用`;
|
}
|
} catch (error) {
|
this.info.result = false;
|
this.info.msg = "错误:" + error.message;
|
}
|
ctx.body = this.info;
|
}
|
//#endregion
|
|
//#region 拼盘出库-查询库存用
|
@Post()
|
public async searchApi() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
// let userInfo = await ctx.helper.userInfo();
|
try {
|
// let datalist = await this.dbRead.find(vBaseProductPosition, {
|
// userProduct_Id: userInfo.userProduct_Id,
|
// positionName: body.positionName,
|
// plateCode: body.plateCode,
|
// productStorage: MoreThan(0),
|
// positionType: 1
|
// });
|
|
let whereStr = "";
|
var where: any = {};
|
//whereStr += ` productStorage>0 AND (positionType=1 OR positionType=6)`;//常规货位 = 1, 暂存区 = 4, 空托盘 = 6
|
whereStr += ` productStorage>0 AND (positionType=1 )`;//拼盘只允许查询常规货位 【EditBy shaocx,2022-10-16】
|
whereStr += ` AND ( IsLocked=0 AND IsFreeze=1 AND Enable=1 )`;//增加对锁定状态、是否可用、是否有货的筛选 【EditBy shaocx,2022-10-16】
|
// 关键词查询条件
|
if (body.plateCode) {
|
let plateCode = this.ctx.helper.sqlSecurity(body.plateCode);
|
whereStr += `AND (plateCode LIKE '%' + :plateCode + '%')`;
|
where.plateCode = plateCode;
|
}
|
if (body.positionName) {
|
let positionName = this.ctx.helper.sqlSecurity(body.positionName);
|
whereStr += ` AND positionName = '` + positionName + `'`;
|
where.positionName = positionName;
|
}
|
// 查询当前用户常用的物料
|
var dataList = await this.dbRead.createQueryBuilder(vBaseProductPosition, "t").where(whereStr).getMany();
|
if (dataList.length) {
|
this.info.data = dataList;
|
this.info.result = true;
|
} else {
|
this.info.result = false;
|
this.info.msg = `${body.plateCode}不存在`;
|
}
|
} catch (error) {
|
this.info.result = false;
|
this.info.msg = "错误:" + error.message;
|
}
|
ctx.body = this.info;
|
}
|
//#endregion
|
|
//#region判断库存是否有此器具
|
@Post()
|
public async isPlate() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
let userInfo = await ctx.helper.userInfo();
|
try {
|
let taskPlate = await this.dbRead.find(BasePlate, {
|
plateCode: body.plateCode
|
});
|
if (taskPlate.length === 0) {
|
this.info.result = false;
|
this.info.msg = "托盘不存在!";
|
this.ctx.body = this.info;
|
return;
|
}
|
let datalist = await this.dbRead.find(vBaseProductPosition, {
|
userProduct_Id: userInfo.userProduct_Id,
|
plateCode: body.plateCode
|
});
|
let taskQueue = await this.dbRead.find(TaskQueue, {
|
plateCode: body.plateCode,
|
taskStatus: "未下发"
|
});
|
let taskShelve = await this.dbRead.find(PurchaseShelve, {
|
plateCode: body.plateCode,
|
onShelveStatus: "待上架"
|
});
|
if (datalist.length || taskQueue.length || taskShelve.length) {
|
this.info.data = datalist;
|
this.info.result = true;
|
}
|
} catch (error) {
|
this.info.result = false;
|
this.info.msg = "错误:" + error.message;
|
}
|
ctx.body = this.info;
|
}
|
//#endregion
|
}
|