add:PDA配粉工序查询过滤,PDA球磨工序上料查询过滤,新增型材区域,手持喷雾工序增加按钮‘入原材料库’,外协发货增加逻辑,PDA增加内部软废入库功能

This commit is contained in:
2023-05-03 10:19:54 +08:00
parent 58f7c89bb8
commit 3b5f98eca7
9 changed files with 377 additions and 3 deletions

View File

@@ -2,6 +2,7 @@
package org.nl.pda.pdm.rest;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
@@ -183,6 +184,13 @@ public class PdmWorkTaskController {
return new ResponseEntity<>(workTaskService.confirm(whereJson),HttpStatus.OK);
}
@PostMapping("/inRaw")
@Log("喷雾工序入原材料库")
@ApiOperation("喷雾工序入原材料库")
public ResponseEntity<Object> inRaw(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(workTaskService.inRaw(whereJson),HttpStatus.OK);
}
}

View File

@@ -1,5 +1,6 @@
package org.nl.pda.pdm.service;
import com.alibaba.fastjson.JSONObject;
import org.nl.wql.core.content.HttpContext;
import java.util.Map;
@@ -55,4 +56,6 @@ public interface PdmWorkTaskService {
Map<String, Object> confirm(Map jsonObject);
Map<String, Object> inRaw(JSONObject whereJson);
}

View File

@@ -30,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -159,6 +160,22 @@ public class PdmWorkTaskServiceImpl implements PdmWorkTaskService {
JSONObject item = (JSONObject)o;
String vehicle_code = item.getString("storagevehicle_code");
if (!runVehicles.contains(vehicle_code)){
/*
判断此配粉槽是否是所属系列产线指定的配粉槽
@param:
workprocedure_id - 工序标识 product_series_id - 系列标识 device_id - 设备标识
根据以上参数查询 MPS_BD_CapacityTemplateWorkDevice 表是否存在此设备的工序设备
*/
// 根据物料系列找到排产产能模板系列
String device_id = item.getString("device_id");
JSONObject jsonTemple= WQL.getWO("QPDM_WORK_TASK").addParam("workprocedure_id", workprocedure_id)
.addParam("product_series_id", product_series_id).addParam("flag", "11")
.addParam("device_id", device_id).process().uniqueResult(0);
if (ObjectUtil.isEmpty(jsonTemple)) continue;
vehicle = item;
break;
}
@@ -613,12 +630,69 @@ public class PdmWorkTaskServiceImpl implements PdmWorkTaskService {
if (ObjectUtil.isEmpty(jsonObject)) {
throw new PdaRequestException("传入参数不能为空!");
}
String device_code = MapUtil.getStr(jsonObject, "device_code");
if (ObjectUtil.isEmpty(device_code)) throw new BadRequestException("设备不能为空!");
JSONObject jo = JSONObject.parseObject(JSON.toJSONString(jsonObject));
String is_second = jo.getString("is_second");
JSONArray rows = WQL.getWO("QPDM_WORK_TASK").addParam("flag", "6").addParam("is_second", is_second).process().getResultJSONArray(0);
/*
* 1.根据输入参数 device_code(球磨机) 查询排产模板中对应的物料系列,
* 2.根据物料系列查询配粉工序中设备是否包含此设备
*/
JSONObject jsonDevice = WQLObject.getWQLObject("em_bi_deviceinfo")
.query("device_code = '" + device_code + "' and is_delete = '0' and is_active = '1'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonDevice)) throw new BadRequestException("设备不存在!");
// 获取喷雾
JSONObject jsonProced = WQLObject.getWQLObject("pdm_bi_workprocedure")
.query("workprocedure_code = 'GX001'")
.uniqueResult(0);
// 获取此球磨机物料系列
JSONArray resultJSONArray = WQLObject.getWQLObject("MPS_BD_CapacityTemplateWorkDevice")
.query("device_id = '" + jsonDevice.getString("device_id") + "'")
.getResultJSONArray(0);
if (ObjectUtil.isEmpty(resultJSONArray)) throw new BadRequestException("此设备没有配置模板系列!");
JSONArray array = new JSONArray();
HashSet<JSONObject> setMap = new HashSet<>();
for (int j = 0; j < resultJSONArray.size(); j++) {
JSONObject templeDevice = resultJSONArray.getJSONObject(j);
// 根据物料系列查询配粉工序中是否包含此设备
for (int i = 0; i < rows.size(); i++) {
JSONObject json = rows.getJSONObject(i);
JSONObject jsonPfDevice = WQLObject.getWQLObject("em_bi_deviceinfo")
.query("device_code = '" + json.getString("storagevehicle_code") + "'")
.uniqueResult(0);
JSONObject jsonWorkDevice = WQLObject.getWQLObject("MPS_BD_CapacityTemplateWorkDevice")
.query("product_series_id = '" + templeDevice.getString("product_series_id")
+ "' and workprocedure_id = '" + jsonProced.getString("workprocedure_id")
+ "' and device_id = '" + jsonPfDevice.getString("device_id") + "'")
.uniqueResult(0);
// 判断是否存在 存在则返回
if (ObjectUtil.isNotEmpty(jsonWorkDevice)) {
setMap.add(json);
}
}
}
for (JSONObject json : setMap) {
array.add(json);
}
JSONObject returnjo = new JSONObject();
returnjo.put("code", "1");
returnjo.put("content", rows);
returnjo.put("content", array);
returnjo.put("desc", "查询成功!");
return returnjo;
}
@@ -959,9 +1033,64 @@ public class PdmWorkTaskServiceImpl implements PdmWorkTaskService {
@Override
public Map<String, Object> PWload(Map jsonObject) {
JSONArray rows = WQL.getWO("QPDM_WORK_TASK").addParam("flag", "8").process().getResultJSONArray(0);
/*
* 1.根据输入参数 device_code(喷雾塔) 查询排产模板中对应的物料系列,
* 2.根据物料系列查询球磨工序中设备是否包含此设备
*/
String device_code = MapUtil.getStr(jsonObject, "device_code");
JSONObject jsonDevice = WQLObject.getWQLObject("em_bi_deviceinfo")
.query("device_code = '" + device_code + "' and is_delete = '0' and is_active = '1'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonDevice)) throw new BadRequestException("设备不存在!");
// 获取球磨工序
JSONObject jsonProced = WQLObject.getWQLObject("pdm_bi_workprocedure")
.query("workprocedure_code = 'GX002'")
.uniqueResult(0);
// 获取此喷雾塔物料系列
JSONArray resultJSONArray = WQLObject.getWQLObject("MPS_BD_CapacityTemplateWorkDevice")
.query("device_id = '" + jsonDevice.getString("device_id") + "'")
.getResultJSONArray(0);
if (ObjectUtil.isEmpty(resultJSONArray)) throw new BadRequestException("此设备没有配置模板系列!");
JSONArray array = new JSONArray();
HashSet<JSONObject> setMap = new HashSet<>();
for (int j = 0; j < resultJSONArray.size(); j++) {
JSONObject templeDevice = resultJSONArray.getJSONObject(j);
// 根据物料系列查询球磨工序中是否包含此设备
for (int i = 0; i < rows.size(); i++) {
JSONObject json = rows.getJSONObject(i);
JSONObject jsonPfDevice = WQLObject.getWQLObject("em_bi_deviceinfo")
.query("device_code = '" + json.getString("device_code") + "'")
.uniqueResult(0);
JSONObject jsonWorkDevice = WQLObject.getWQLObject("MPS_BD_CapacityTemplateWorkDevice")
.query("product_series_id = '" + templeDevice.getString("product_series_id")
+ "' and workprocedure_id = '" + jsonProced.getString("workprocedure_id")
+ "' and device_id = '" + jsonPfDevice.getString("device_id") + "'")
.uniqueResult(0);
// 判断是否存在 存在则返回
if (ObjectUtil.isNotEmpty(jsonWorkDevice)) {
setMap.add(json);
}
}
}
for (JSONObject json : setMap) {
array.add(json);
}
JSONObject returnjo = new JSONObject();
returnjo.put("code", "1");
returnjo.put("content", rows);
returnjo.put("content", array);
returnjo.put("desc", "查询成功!");
return returnjo;
}
@@ -1585,6 +1714,69 @@ public class PdmWorkTaskServiceImpl implements PdmWorkTaskService {
return returnjo;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Map<String, Object> inRaw(JSONObject whereJson) {
/*
只生成搬运任务
*/
WQLObject workorderTab = WQLObject.getWQLObject("pdm_bi_workorder");
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
String vehicle_code = whereJson.getString("vehicle_code");
String point_code = whereJson.getString("point_code");
if (ObjectUtil.isEmpty(vehicle_code)) throw new BadRequestException("托盘不能为空!");
if (ObjectUtil.isEmpty(point_code)) throw new BadRequestException("起点不能为空!");
JSONObject form = whereJson.getJSONObject("row");
// 判断是否是外协工令
JSONObject jsonWork = workorderTab.query("workorder_code = '" + form.getString("workorder_code") + "'").uniqueResult(0);
if (!StrUtil.equals(jsonWork.getString("is_out"), "1")) {
throw new PdaRequestException("此工令不是外协工令!");
}
// 判断托盘是否被占用
JSONObject jsonVehicle = pointTab.query("vehicle_code = '" + vehicle_code + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonVehicle)) throw new BadRequestException("此托盘已被占用!");
// 找一个型材区的点位
JSONObject jsonNextPoint = pointTab.query("area_type = '09' and lock_type = '00' and is_used = '1' and is_delete = '0' and point_status = '00' order by point_code")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonNextPoint)) throw new PdaRequestException("没有可用点位!");
// 生成任务并下发
JSONObject task_jo = new JSONObject();
task_jo.put("start_point_code", point_code);
task_jo.put("next_point_code",jsonNextPoint.getString("point_code"));
task_jo.put("vehicle_code", vehicle_code);
task_jo.put("task_type", "16");
task_jo.put("taskdtl_type", "15");
AbstractAcsTask task = new ProductTask();
String taskdtl_id = task.createTask(task_jo);
AbstractAcsTask intask = new InTask();
//调用ACS接受任务接口
JSONObject result = intask.notifyAcs(taskdtl_id);
if (ObjectUtil.isNotEmpty(result)) {
String status = result.getString("status");
if ("200".equals(status)) {
HashMap<String, String> mapnow = new HashMap<>();
mapnow.put("task_status", "02");
WQLObject.getWQLObject("SCH_BASE_Task").update(mapnow, "taskdtl_id = '" + taskdtl_id + "'");
} else {
throw new BadRequestException("任务下发失败:" + result.getString("message"));
}
}
JSONObject returnjo = new JSONObject();
returnjo.put("code", "1");
returnjo.put("desc", "操作成功!");
return returnjo;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Map<String, Object> confirmGZLoad(Map jsonObject) {

View File

@@ -23,6 +23,7 @@
输入.is_second TYPEAS s_string
输入.product_series_id TYPEAS s_string
输入.workprocedure_id TYPEAS s_string
输入.device_id TYPEAS s_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
@@ -413,3 +414,22 @@
ENDQUERY
ENDIF
IF 输入.flag = "11"
QUERY
SELECT
device.*
FROM
MPS_BD_CapacityTemplateWorkDevice device
LEFT JOIN MPS_BD_CapacityTemplateMst mst ON mst.captemplate_id = device.captemplate_id
WHERE
device.product_series_id = 输入.product_series_id
AND device.workprocedure_id = 输入.workprocedure_id
AND device.device_id = 输入.device_id
AND mst.is_used = '1'
AND mst.is_delete = '0'
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -2,6 +2,7 @@
package org.nl.pda.st.in.rest;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
@@ -113,4 +114,18 @@ public class HandNewMaterialController {
return new ResponseEntity<>(handNewMaterialService.getRecBillDtl(whereJson,ctx),HttpStatus.OK);
}
@PostMapping("/insideIn")
@Log("内部软废入库查询组盘信息")
@ApiOperation("内部软废入库查询组盘信息")
public ResponseEntity<Object> insideIn(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(handNewMaterialService.insideIn(whereJson),HttpStatus.OK);
}
@PostMapping("/insideInConfirm")
@Log("内部软废入库确认")
@ApiOperation("内部软废入库确认")
public ResponseEntity<Object> insideInConfirm(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(handNewMaterialService.insideInConfirm(whereJson),HttpStatus.OK);
}
}

View File

@@ -1,5 +1,6 @@
package org.nl.pda.st.in.service;
import com.alibaba.fastjson.JSONObject;
import org.nl.wql.core.content.HttpContext;
import java.util.Map;
@@ -92,4 +93,20 @@ public interface HandNewMaterialService {
* @return Map
*/
Map<String, Object> askVehicle(Map jsonObject);
/**
* 内部软废入库查询组盘信息
*
* @param whereJson 条件
* @return Map
*/
Map<String, Object> insideIn(JSONObject whereJson);
/**
* 内部软废入库确认
*
* @param whereJson 条件
* @return Map
*/
Map<String, Object> insideInConfirm(JSONObject whereJson);
}

View File

@@ -960,6 +960,72 @@ public class HandNewMaterialServiceImpl implements HandNewMaterialService {
return returnjo;
}
@Override
public Map<String, Object> insideIn(JSONObject whereJson) {
String vehicle_code = whereJson.getString("vehicle_code");
if (ObjectUtil.isEmpty(vehicle_code)) throw new PdaRequestException("载具号不能为空");
JSONArray resultJSONArray = WQL.getWO("QST_IVT_RAWASSISTISTOR")
.addParam("flag", "12").addParam("storagevehicle_code", vehicle_code)
.process().getResultJSONArray(0);
JSONObject returnjo = new JSONObject();
returnjo.put("code", "1");
returnjo.put("desc", "查询成功!");
returnjo.put("content", resultJSONArray);
return returnjo;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Map<String, Object> insideInConfirm(JSONObject whereJson) {
String vehicle_code = whereJson.getString("vehicle_code");
String point_code = whereJson.getString("point_code");
if (ObjectUtil.isEmpty(vehicle_code)) throw new PdaRequestException("载具号不能为空!");
if (ObjectUtil.isEmpty(point_code)) throw new PdaRequestException("站点不能为空!");
/*
* 1.根据托盘号找到生成状态的分配明细
* 2.调用接口自动分配并下发任务
*/
// 根据托盘找到分配明细
JSONArray disArr = WQL.getWO("QST_IVT_RAWASSISTISTOR")
.addParam("storagevehicle_code", vehicle_code).addParam("flag", "13")
.process().getResultJSONArray(0);
// 调用入库分配接口并下发任务
ArrayList<HashMap<String, String>> list = new ArrayList<>();
for (int i = 0; i < disArr.size(); i++) {
JSONObject jo = disArr.getJSONObject(i);
HashMap<String, String> row = new HashMap<>();
row.put("point_code", point_code);
row.put("storagevehicle_id", jo.getString("storagevehicle_id"));
row.put("storagevehicle_code", jo.getString("storagevehicle_code"));
row.put("storagevehicle_type", jo.getString("storagevehicle_type"));
row.put("material_id", jo.getString("material_id"));
row.put("iostorinv_id", jo.getString("iostorinv_id"));
JSONObject mater_jo = WQLObject.getWQLObject("md_me_materialbase").query("material_id = '" + jo.getString("material_id") + "'").uniqueResult(0);
row.put("material_code", mater_jo.getString("material_code"));
list.add(row);
}
whereJson.put("tableMater", list);
whereJson.put("checked", true);
whereJson.put("auto_issue", true);
try {
rawAssistIStorService.divStruct(whereJson);
} catch (Exception e) {
throw new PdaRequestException(e.getMessage());
}
JSONObject returnjo = new JSONObject();
returnjo.put("code", "1");
returnjo.put("desc", "入库成功!");
return returnjo;
}
@Transactional(rollbackFor = Exception.class)
public void insertBucket(HashMap row) {
WQLObject bucket_wql = WQLObject.getWQLObject("MD_PB_BucketRecord");

View File

@@ -172,11 +172,23 @@ public class HandXCOutIvtServiceImpl implements HandXCOutIvtService {
String allBucketunique = "(\""+bucketuniques.stream().collect(Collectors.joining("\",\""))+"\")";
bucket.update(updateParam, "bucketunique in " + allBucketunique);
}
// 解锁点位托盘:根据托盘找到点位并解锁
JSONObject jsonPoint = WQLObject.getWQLObject("sch_base_point")
.query("vehicle_code = '" + storagevehicle_code + "'")
.uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonPoint)) {
jsonPoint.put("vehicle_code","");
jsonPoint.put("point_status","00");
jsonPoint.put("lock_type","00");
WQLObject.getWQLObject("sch_base_point").update(jsonPoint);
}
JSONObject returnjo = new JSONObject();
returnjo.put("code", "1");
returnjo.put("desc", "操作成功!");
return returnjo;
}
}

View File

@@ -449,6 +449,47 @@
ENDQUERY
ENDIF
IF 输入.flag = "12"
QUERY
SELECT
buck.bucketunique,
mater.material_code,
buck.pcsn,
buck.storage_qty
FROM
md_pb_bucketrecord buck
LEFT JOIN md_me_materialbase mater ON buck.material_id = mater.material_id
WHERE
buck.status = '02'
OPTION 输入.storagevehicle_code <> ""
buck.storagevehicle_code = 输入.storagevehicle_code
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "13"
QUERY
SELECT
dis.*,
mst.iostorinv_id
FROM
st_ivt_iostorinvdis dis
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
WHERE
mst.is_delete = '0'
AND dis.work_status = '00'
OPTION 输入.storagevehicle_code <> ""
dis.storagevehicle_code = 输入.storagevehicle_code
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF