监控大屏更新

This commit is contained in:
ludj
2022-11-11 15:31:28 +08:00
parent ddf03aaa0b
commit ec8e8564f9
8 changed files with 146 additions and 29 deletions

View File

@@ -1,6 +1,7 @@
package org.nl.wms.ext.dp.service.imp;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -12,6 +13,8 @@ import org.nl.modules.system.service.dto.UserDto;
import org.nl.utils.RsaUtils;
import org.nl.wms.ext.dp.service.BigScreenService;
import org.nl.wql.WQL;
import org.nl.wql.core.bean.WQLObject;
import org.nl.wql.core.engine.object.WO;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
@@ -162,9 +165,11 @@ public class BigScreenServiceImpl implements BigScreenService {
//查询熟化区的入库转储任务
JSONObject jo = new JSONObject();
//静止中
JSONArray allrows = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "11").process()
.getResultJSONArray(0);
//静止完成
JSONArray allrows2 = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "12").process()
.getResultJSONArray(0);
jo.put("allrows", allrows);
@@ -235,6 +240,23 @@ public class BigScreenServiceImpl implements BigScreenService {
//查询熟化仓位信息
JSONArray allrows = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "5").process()
.getResultJSONArray(0);
//物料标签明细表【md_base_materialLabelDtl】
WQLObject materialLabelDtlTab = WQLObject.getWQLObject("md_base_materialLabelDtl");
//拼接库存信息
for (int i = 0; i < allrows.size(); i++) {
JSONObject json = allrows.getJSONObject(i);
String labeldtl_uuid = json.getString("labeldtl_uuid");
if (StrUtil.isNotEmpty(labeldtl_uuid)) {
JSONObject jsonObject1 = materialLabelDtlTab.query("labeldtl_uuid = '" + labeldtl_uuid + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonObject1)) {
JSONObject labelObj = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "13").addParam("labeldtl_uuid", labeldtl_uuid).process().uniqueResult(0);
//配方-批次-重量(YC-B8-1000)
String material_ivt_info = labelObj.getString("formula") + "-" + labelObj.getString("pcsn") + "-" + labelObj.getString("weight");
json.put("material_ivt_info", material_ivt_info);
}
}
}
return allrows;
}
@@ -351,6 +373,24 @@ public class BigScreenServiceImpl implements BigScreenService {
//查询熟化仓位信息
JSONArray allrows = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "10").process()
.getResultJSONArray(0);
//物料标签明细表【md_base_materialLabelDtl】
WQLObject materialLabelDtlTab = WQLObject.getWQLObject("md_base_materialLabelDtl");
//拼接库存信息
for (int i = 0; i < allrows.size(); i++) {
JSONObject json = allrows.getJSONObject(i);
String labeldtl_uuid = json.getString("labeldtl_uuid");
if (StrUtil.isNotEmpty(labeldtl_uuid)) {
JSONObject jsonObject1 = materialLabelDtlTab.query("labeldtl_uuid = '" + labeldtl_uuid + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonObject1)) {
JSONObject labelObj = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "13").addParam("labeldtl_uuid", labeldtl_uuid).process().uniqueResult(0);
//配方-批次-重量(YC-B8-1000)
String material_ivt_info = labelObj.getString("formula") + "-" + labelObj.getString("pcsn") + "-" + labelObj.getString("weight");
json.put("material_ivt_info", material_ivt_info);
json.put("color", labelObj.getString("color"));
}
}
}
return allrows;
}
}

View File

@@ -13,9 +13,10 @@
#################################################
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.date_begin TYPEAS s_string
输入.date_end TYPEAS s_string
输入.flag TYPEAS s_string
输入.date_begin TYPEAS s_string
输入.date_end TYPEAS s_string
输入.labeldtl_uuid TYPEAS s_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
@@ -171,6 +172,7 @@ IF 输入.flag = "3"
material.formula,
point.point_code AS struct_code,
ivt.label_code,
ivt.labeldtl_uuid,
CASE
WHEN point.is_active = '0' THEN
@@ -392,23 +394,41 @@ IF 输入.flag = "8"
ENDQUERY
ENDIF
IF 输入.flag = "12"
QUERY
SELECT
round ( sum( ivt.canuse_qty ), 0 ) AS finished_quantity,
ivt.label_code,
mst.formula,
mst.pcsn
FROM
st_ivt_structivt ivt
LEFT JOIN sch_base_point point ON point.point_uuid = ivt.struct_uuid
LEFT JOIN md_base_materialLabelMst mst ON ivt.label_uuid = ivt.label_uuid
WHERE
TIMESTAMPDIFF( HOUR, ivt.instorage_time, now( ) ) >= ivt.stand_hour
AND point.area_type IN ( '01', '02' )
GROUP BY
mst.formula,mst.pcsn,ivt.label_code
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "12"
QUERY
SELECT
round ( sum( ivt.canuse_qty ), 0 ) AS finished_quantity,
ivt.label_code,
mst.formula,
mst.pcsn
FROM
st_ivt_structivt ivt
LEFT JOIN sch_base_point point ON point.point_uuid = ivt.struct_uuid
LEFT JOIN md_base_materialLabelMst mst ON ivt.label_uuid = ivt.label_uuid
WHERE
TIMESTAMPDIFF( HOUR, ivt.instorage_time, now( ) ) >= ivt.stand_hour
AND point.area_type IN ( '01', '02' )
GROUP BY
mst.formula,mst.pcsn,ivt.label_code
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "13"
SELECT
mst.material_uuid,
mst.material_code,
mst.material_name,
mst.formula,
mst.pcsn,
mst.color,
dtl.weight
FROM
md_base_materialLabelDtl dtl
LEFT JOIN md_base_materialLabelMst mst ON dtl.label_uuid = mst.label_uuid
OPTION 输入.labeldtl_uuid <> ""
dtl.labeldtl_uuid = 输入.labeldtl_uuid
ENDOPTION
ENDQUERY
ENDIF

View File

@@ -166,6 +166,12 @@ public class ProduceTaskController {
produceTaskService.materialBack(map);
return new ResponseEntity<>(HttpStatus.OK);
}
@ApiOperation("空托回库")
@PostMapping("/emptyVehicleBack")
public ResponseEntity<Object> emptyVehicleBack(@RequestBody Map map) {
produceTaskService.emptyVehicleBack(map);
return new ResponseEntity<>(HttpStatus.OK);
}
@ApiOperation("根据设备id查询任务")
@GetMapping("/{id}")

View File

@@ -131,6 +131,12 @@ public interface ProduceTaskService {
* @param map
*/
void materialBack(Map map);
/**
* 空托回库
*
* @param map
*/
void emptyVehicleBack(Map map);
/**

View File

@@ -507,6 +507,28 @@ public class ProduceTaskServiceImpl implements ProduceTaskService {
}
@Override
public void emptyVehicleBack(Map map) {
String id = MapUtil.getStr(map, "id");
if (StrUtil.isEmpty(id)) throw new BadRequestException("所选屏位置不能为空!");
String point_code = "BCPSL0" + id;
//判断点位上有没有托盘,没有托盘不允许回库
// JSONObject pointObj = WQLObject.getWQLObject("sch_base_point").query("point_code='" + point_code + "'").uniqueResult(0);
// String vehicle_code = pointObj.optString("vehicle_code");
//判断是否有到该设备的未完成的AGV任务
//任务基础表【sch_base_task】
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
JSONObject taskJson = taskTab.query(" is_delete='0' and task_status<>'06' and start_point_code = '" + point_code + "' and handle_class = '" + InEmptyVehicleTask.class.getName() + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(taskJson)) throw new BadRequestException("该设备有未完成的搬运任务,不能重复操作!");
JSONObject param = new JSONObject();
param.put("start_point_code", point_code);
InEmptyVehicleTask inEmptyVehicleTask = new InEmptyVehicleTask();
inEmptyVehicleTask.createTask(param);
}
@Override
@Transactional(rollbackFor = Exception.class)
public JSONArray queryIdDevice(String id) {
@@ -571,10 +593,10 @@ public class ProduceTaskServiceImpl implements ProduceTaskService {
//标签标识
String label_uuid = labelObj.getString("label_uuid");
HashMap param = new HashMap();
param.put("flag","1");
param.put("label_uuid",label_uuid);
param.put("flag", "1");
param.put("label_uuid", label_uuid);
JSONObject jsonObject = WQL.getWO("QPDM_PRODUCETASK_005").addParamMap(param).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonObject))return jsonObject.getString("ivt_qty");
if (ObjectUtil.isNotEmpty(jsonObject)) return jsonObject.getString("ivt_qty");
return "0";
}
}

View File

@@ -121,6 +121,8 @@ public class InEmptyVehicleTask extends AbstractAcsTask {
String task_status = TaskStatusEnum.SURE_START.getCode();
String start_point_code = etvObj.optString("start_point_code");
String next_point_code = etvObj.optString("next_point_code");
JSONObject jsonTask = new JSONObject();
jsonTask.put("task_uuid", IdUtil.simpleUUID());
jsonTask.put("task_code", CodeUtil.getNewCode("TASK_CODE"));

View File

@@ -90,6 +90,13 @@ export function materialBack(data) {
data
})
}
export function emptyVehicleBack(data) {
return request({
url: 'api/produceTask/emptyVehicleBack',
method: 'post',
data
})
}
export function queryIdDevice(id) {
return request({
@@ -138,5 +145,5 @@ export function queryIvtByPscn(data) {
export default {
add, edit, del, getDevice, getMaterial,
getProduceStatus, importExcel, queryTask, querAllTask,
callMaterial, finish, queryIdDevice, popSeek, queryOne, saveOrder, forceFinish, materialBack, queryIvtByPscn
callMaterial, finish, queryIdDevice, popSeek, queryOne, saveOrder, forceFinish, materialBack, queryIvtByPscn, emptyVehicleBack
}

View File

@@ -9,7 +9,8 @@
<el-button type="primary" icon="el-icon-thumb" @click="fresh">界面刷新</el-button>
<el-button type="warning" icon="el-icon-position" @click="callMaterial">生产叫料</el-button>
<el-button type="success" icon="el-icon-finished" @click="finish">生产完成</el-button>
<el-button type="info" icon="el-icon-top-left" @click="materialBack">余料回库</el-button>
<el-button type="danger" icon="el-icon-top-left" @click="materialBack">余料回库</el-button>
<el-button type="info" icon="el-icon-top-left" @click="emptyVehicleBack">空托回库</el-button>
</div>
</el-col>
@@ -74,11 +75,12 @@ export default {
choice: '',
ProduceStatusList: [],
materialList: [],
tableData: []
tableData: [],
id: null
}
},
created() {
// const id = this.$route.params.id
this.id = this.$route.params.id
crudProduceTask.getDevice().then(res => {
this.deviceList = res
})
@@ -167,6 +169,18 @@ export default {
console.log(err.response.data.message)
})
},
emptyVehicleBack() {
const data = {
id: this.id
}
debugger
crudProduceTask.emptyVehicleBack(data).then(res => {
this.notify('操作成功', 'success')
this.queryId()
}).cache(err => {
console.log(err.response.data.message)
})
},
formatStatusName(row, column) {
for (const item of this.ProduceStatusList) {
if (item.code === row.produce_status) {