代码更新

This commit is contained in:
ludj
2023-04-20 20:51:13 +08:00
parent 0b4e68961f
commit a6228ce2b9
16 changed files with 1417 additions and 1699 deletions

View File

@@ -18,6 +18,9 @@
<jna.version>5.5.0</jna.version>
</properties>
<dependencies>
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
@@ -97,6 +100,18 @@
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.16.4</version>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-actuator</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- jwt -->
<dependency>
<groupId>io.jsonwebtoken</groupId>

View File

@@ -3,18 +3,14 @@ package org.nl.wms.common;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.nl.exception.BadRequestException;
import org.nl.modules.system.service.impl.ParamServiceImpl;
import org.nl.utils.SpringContextHolder;
import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl;
import org.nl.wql.WQL;
import org.nl.wql.core.bean.WQLObject;
import org.springframework.http.HttpStatus;
public class PointUpdateUtil {
public static void updatePoint(JSONArray arr) {
String isConnect =
SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue();
String isConnect = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue();
if (StrUtil.equals("0", isConnect)) {
return;
}

View File

@@ -7,9 +7,8 @@ import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Interner;
import com.google.common.collect.Interners;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.utils.UserInfoUtil;
import org.nl.exception.BadRequestException;
@@ -34,13 +33,18 @@ import org.nl.wms.sch.service.dto.PointDto;
import org.nl.wms.sch.service.dto.TaskDto;
import org.nl.wql.WQL;
import org.nl.wql.core.bean.WQLObject;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.reactive.TransactionContextManager;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@Service
@RequiredArgsConstructor
@@ -57,17 +61,30 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
private final ToPackIngTask toPackIngTask;
private final FmjToPackIngTask fmjToPackIngTask;
private final VehicleService vehicleService;
@Autowired
private RedissonClient redissonClient;
@Autowired
private AcsToWmsService acsToWmsService;
@Override
@SneakyThrows
public Map<String, Object> receiveTaskFromAcs(Map jsonObject) {
String type = (String) jsonObject.get("type");
Interner<String> pool = Interners.newWeakInterner();
synchronized (pool.intern(type)) {
RLock lock = redissonClient.getLock("acs_to_wms:" + type);
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS);
try {
if (tryLock) {
return acsToWmsService.receiveTaskFromAcsTrancs(jsonObject);
}
} finally {
if (tryLock) {
lock.unlock();
}
}
return null;
}
@Override
@@ -96,24 +113,15 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
jsonObject.put("create_mode", "01");
jsonObject.put("group_id", group_id);
// 假如是半托缓存的几个位置,强制去包装
String area_type =
pointTable
.query("point_code ='" + device_code + "'")
.uniqueResult(0)
.getString("area_type");
String area_type = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0).getString("area_type");
if (StrUtil.equals(area_type, AreaEnum.BTHCQ.getCode())) {
fmjToPackIngTask.createTask((JSONObject) JSON.toJSON(jsonObject));
// 生成到包装位的任务时下发托盘类型给RGV
String point_id = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0).getString("point_id");
String material_id = structivtTable.query("struct_id ='" + point_id + "'").uniqueResult(0)
.getString("material_id");
JSONObject materiralObj1 =
WQLObject.getWQLObject("md_me_material")
.query("material_id = '" + material_id + "'")
.uniqueResult(0);
String material_id = structivtTable.query("struct_id ='" + point_id + "'").uniqueResult(0).getString("material_id");
JSONObject materiralObj1 = WQLObject.getWQLObject("md_me_material").query("material_id = '" + material_id + "'").uniqueResult(0);
// 寻找对应的托盘类型
String vehicle_type =
vehicleService.getVehicleType(materiralObj1.getString("vehicle_type"));
String vehicle_type = vehicleService.getVehicleType(materiralObj1.getString("vehicle_type"));
JSONObject jsonObject1 = new JSONObject();
JSONArray array = new JSONArray();
jsonObject1.put("device_code", "RGV2");
@@ -129,10 +137,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
String material_code = (String) jsonObject.get("material_code");
String producetask_id = (String) jsonObject.get("producetask_id");
String material_id = "";
JSONObject materialObj =
WQLObject.getWQLObject("md_me_material")
.query("material_code ='" + material_code + "'")
.uniqueResult(0);
JSONObject materialObj = WQLObject.getWQLObject("md_me_material").query("material_code ='" + material_code + "'").uniqueResult(0);
if (StrUtil.isEmpty(material_code)
&& (!StrUtil.equals(device_code, "CYSSX101"))
&& !StrUtil.equals(device_code.substring(0, 4), "BTHC")) {
@@ -148,9 +153,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (StrUtil.isEmpty(vehicle_code)) {
throw new BadRequestException("载具不能为空!");
}
JSONObject vehicleObj = WQLObject.getWQLObject("st_buss_vehiclegroup")
.query("vehicle_code='" + vehicle_code + "'", "create_time desc")
.uniqueResult(0);
JSONObject vehicleObj = WQLObject.getWQLObject("st_buss_vehiclegroup").query("vehicle_code='" + vehicle_code + "'", "create_time desc").uniqueResult(0);
if (ObjectUtil.isEmpty(vehicleObj)) {
throw new BadRequestException("为找到载具号为'" + vehicle_code + "'的组盘信息!");
}
@@ -166,21 +169,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
jsonObject.put("producetask_id", producetask_id);
jsonObject.put("create_mode", "01");
jsonObject.put("material_id", material_id);
JSONObject materiralObj =
WQLObject.getWQLObject("md_me_material")
.query("material_id = '" + material_id + "'")
.uniqueResult(0);
JSONObject materiralObj = WQLObject.getWQLObject("md_me_material").query("material_id = '" + material_id + "'").uniqueResult(0);
Double stewing_time = materiralObj.getDouble("stewing_time");
jsonObject.put("stewing_time", stewing_time);
// 假如是压制下料的几个位置,则要考虑是入输送线 还是入立体库
if (StrUtil.equals(area_type, AreaEnum.YZQY.getCode()) && stewing_time <= 0) {
// 1.首先更新所有输送线的点位状态
JSONArray pointarr =
WQL.getWO("ACSTOMES_001")
.addParam("area_type", "07")
.addParam("flag", "4")
.process()
.getResultJSONArray(0);
JSONArray pointarr = WQL.getWO("ACSTOMES_001").addParam("area_type", "07").addParam("flag", "4").process().getResultJSONArray(0);
PointUpdateUtil.updatePoint(pointarr);
// 2.找一个合适的输送带
JSONObject pointObj = StructFindUtil.getConveyor(materiralObj);
@@ -209,25 +204,15 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
// 假如是分拣机械手的下料位置,并且是满托,则去包装线
if (StrUtil.equals("1", is_full) && StrUtil.equals(area_type, AreaEnum.FJQY.getCode())) {
String vehicle_code =
pointTable
.query("point_code ='" + device_code + "'")
.uniqueResult(0)
.getString("vehicle_code");
String vehicle_code = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0).getString("vehicle_code");
jsonObject.put("vehicle_code", vehicle_code);
// if (StrUtil.isEmpty(vehicle_code)) {
// throw new BadRequestException("当前点位载具号为空!");
// }
toPackIngTask.createTask((JSONObject) JSON.toJSON(jsonObject));
// 生成到包装位的任务时下发托盘类型给RGV
JSONObject vehicleObj =
WQLObject.getWQLObject("md_pb_vehicle")
.query("vehicle_code='" + vehicle_code + "'", "create_time desc")
.uniqueResult(0);
JSONObject vehicleObj = WQLObject.getWQLObject("md_pb_vehicle").query("vehicle_code='" + vehicle_code + "'", "create_time desc").uniqueResult(0);
if (ObjectUtil.isNotEmpty(vehicleObj)) {
String vehicle_type =
vehicleService.getVehicleType(vehicleObj.getString("vehicle_type"));
String vehicle_type = vehicleService.getVehicleType(vehicleObj.getString("vehicle_type"));
JSONObject jsonObject1 = new JSONObject();
JSONArray array = new JSONArray();
jsonObject1.put("device_code", "RGV2");
@@ -245,11 +230,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// 假如是分拣机械手的下料位置,则需要将点位上的托盘号写入
if (StrUtil.equals(area_type, AreaEnum.FJQY.getCode())) {
String vehicle_code =
pointTable
.query("point_code ='" + device_code + "'")
.uniqueResult(0)
.getString("vehicle_code");
String vehicle_code = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0).getString("vehicle_code");
jsonObject.put("vehicle_code", vehicle_code);
}
String task_id = sendMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject));
@@ -260,7 +241,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONObject groupInfo = groupTable.query("task_id='" + task_id + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(groupInfo)) {
log.info("判断送料任务标识异常:" + task_id);
throw new BadRequestException("压制满料扫码组盘错误,任务标识:" + task_id);
}
log.info("判断送料任务正常:" + task_id);
@@ -285,12 +265,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
jsonObject.put("next_point_code", device_code);
jsonObject.put("create_mode", "01");
// 机械手1 is_full给1 机械手3is_full给空半托跟满托都可以出
if (StrUtil.equals(device_code, "FJJXSSLW101")
|| StrUtil.equals(device_code, "FJJXSSLW102")) {
if (StrUtil.equals(device_code, "FJJXSSLW101") || StrUtil.equals(device_code, "FJJXSSLW102")) {
is_full = "1";
}
if (StrUtil.equals(device_code, "FJJXSSLW301")
|| StrUtil.equals(device_code, "FJJXSSLW302")) {
if (StrUtil.equals(device_code, "FJJXSSLW301") || StrUtil.equals(device_code, "FJJXSSLW302")) {
is_full = "2";
}
jsonObject.put("is_full", is_full);
@@ -298,6 +276,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// 批次 物料,客户要从排产单里面去取
jsonObject.put("material_id", produceInfoByCode.getString("material_id"));
callMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject));
break;
case "3":
@@ -311,12 +290,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// 如果是叠盘位3 ,则去铁托盘缓存区取
if (StrUtil.equals(device_code, "KTPDDW3")) {
// 1 更新缓存位
JSONArray pointarr =
WQL.getWO("ACSTOMES_001")
.addParam("area_type", AreaEnum.KTTHCQ.getCode())
.addParam("flag", "4")
.process()
.getResultJSONArray(0);
JSONArray pointarr = WQL.getWO("ACSTOMES_001").addParam("area_type", AreaEnum.KTTHCQ.getCode()).addParam("flag", "4").process().getResultJSONArray(0);
PointUpdateUtil.updatePoint(pointarr);
jsonObject.put("vehicle_type", VehicleTypeEnum.GTP.getCode());
} else {
@@ -330,14 +304,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONObject joo = pointTable.query("point_code='" + device_code + "'").uniqueResult(0);
material_id = produceInfoByCode.getString("material_id");
String workprocedure_id = WorkProcedureEnum.FJGX.getId();
JSONObject jsonObject1 =
WQL.getWO("ACSTOMES_001")
.addParam("flag", "1")
.addParam("workprocedure_id", workprocedure_id)
.addParam("material_id", material_id)
.addParam("device_id", joo.getString("device_id"))
.process()
.uniqueResult(0);
JSONObject jsonObject1 = WQL.getWO("ACSTOMES_001").addParam("flag", "1").addParam("workprocedure_id", workprocedure_id).addParam("material_id", material_id).addParam("device_id", joo.getString("device_id")).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonObject1)) {
// 如果有库存,则出半满托盘
// 叫料出库
@@ -351,12 +318,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
break;
}
// 需要更新覆膜机的托盘类型
JSONArray pointarr =
WQL.getWO("ACSTOMES_001")
.addParam("area_type", "05")
.addParam("flag", "4")
.process()
.getResultJSONArray(0);
JSONArray pointarr = WQL.getWO("ACSTOMES_001").addParam("area_type", "05").addParam("flag", "4").process().getResultJSONArray(0);
PointUpdateUtil.updatePoint(pointarr);
}
if (ObjectUtil.isEmpty(produceInfoByCode)) {
@@ -364,12 +326,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
jsonObject.put("vehicle_type", produceInfoByCode.getString("vehicle_type"));
// 需要更新堆叠位的点位状态
JSONArray pointarr =
WQL.getWO("ACSTOMES_001")
.addParam("point_code", "KTPDDW5")
.addParam("flag", "4")
.process()
.getResultJSONArray(0);
JSONArray pointarr = WQL.getWO("ACSTOMES_001").addParam("point_code", "KTPDDW5").addParam("flag", "4").process().getResultJSONArray(0);
PointUpdateUtil.updatePoint(pointarr);
}
callEmptyVehicleTask.createTask((JSONObject) JSON.toJSON(jsonObject));
@@ -379,10 +336,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
jsonObject.put("next_point_code", device_code);
jsonObject.put("create_mode", "01");
// 1 判断有没有执行的Rgv搬运任务
JSONObject taskObj =
WQLObject.getWQLObject("SCH_BASE_Task")
.query("task_type='04' and is_delete='0' and acs_task_type<>'07'")
.uniqueResult(0);
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_type='04' and is_delete='0' and acs_task_type<>'07'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(taskObj)) {
JSONObject result = new JSONObject();
result.put("status", HttpStatus.CREATED.value());
@@ -394,21 +348,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// 更新所有设备的点位的状态
// JSONArray pointConveyArr = pointTable.query("area_type='07' and device_point_type ='01'
// ").getResultJSONArray(0);
JSONArray pointConveyArr =
WQL.getWO("ACSTOMES_001")
.addParam("area_type", "07")
.addParam("flag", "4")
.process()
.getResultJSONArray(0);
JSONArray pointConveyArr = WQL.getWO("ACSTOMES_001").addParam("area_type", "07").addParam("flag", "4").process().getResultJSONArray(0);
PointUpdateUtil.updatePoint(pointConveyArr);
// 假如没有设置哪个输送线先出,没有按照先进先出
JSONObject param = new JSONObject();
String rule =
WQLObject.getWQLObject("sys_param")
.query("code='is_outrule'")
.uniqueResult(0)
.getString("value");
String rule = WQLObject.getWQLObject("sys_param").query("code='is_outrule'").uniqueResult(0).getString("value");
if (StrUtil.equals(rule, "1")) {
param = WQL.getWO("ACSTOMES_001").addParam("flag", "3").process().uniqueResult(0);
} else {
@@ -459,15 +404,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
String material_id = (String) produceInfoByCode.get("material_id");
String cust_id = (String) produceInfoByCode.get("cust_id");
String producetask_code = (String) produceInfoByCode.get("producetask_code");
JSONObject materialObj =
WQLObject.getWQLObject("MD_ME_Material")
.query("material_id='" + material_id + "'")
.uniqueResult(0);
String producetask_id =
WQLObject.getWQLObject("pdm_mg_producetask")
.query("producetask_code='" + producetask_code + "'")
.uniqueResult(0)
.getString("producetask_id");
JSONObject materialObj = WQLObject.getWQLObject("MD_ME_Material").query("material_id='" + material_id + "'").uniqueResult(0);
String producetask_id = WQLObject.getWQLObject("pdm_mg_producetask").query("producetask_code='" + producetask_code + "'").uniqueResult(0).getString("producetask_id");
JSONObject groubObj = new JSONObject();
String group_id = IdUtil.getSnowflake(1, 1).nextId() + "";
groubObj.put("device_id", produceInfoByCode.getString("device_id"));
@@ -598,9 +536,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
} else {
throw new BadRequestException("未找到指令号'" + task_id);
}
// 将之前的托盘信息删除
// groupTable.delete("vehicle_code='" + vehicle_code + "' and task_id <>'" + task_id +
// "'");
// 如果是送料任务需要反向组盘
String handle_class = taskobj.getString("handle_class");
if (SendMaterialTask.class.getName().equals(handle_class)
@@ -619,10 +554,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
String start_area = taskobj.getString("start_area");
JSONObject requestParam = taskobj.getJSONObject("request_param");
if ("22".equals(start_area)) {
JSONObject materialObj =
WQLObject.getWQLObject("MD_ME_Material")
.query("material_id='" + requestParam.getString("material_id") + "'")
.uniqueResult(0);
JSONObject materialObj =WQLObject.getWQLObject("MD_ME_Material").query("material_id='" + requestParam.getString("material_id") + "'").uniqueResult(0);
groupObj.put("material_code", materialObj.getString("material_code"));
groupObj.put("material_name", materialObj.getString("material_name"));
groupObj.put("material_spec", materialObj.getString("material_spec"));
@@ -1169,16 +1101,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
public static JSONObject getProduceInfoByCode(String code) {
// 根据 设备点位去找生产任务信息
// 1 根据点位去找设备,去找对应的设备信息
JSONObject pointObj =
WQLObject.getWQLObject("sch_base_point")
.query("point_code ='" + code + "'")
.uniqueResult(0);
JSONObject pointObj = WQLObject.getWQLObject("sch_base_point").query("point_code ='" + code + "'").uniqueResult(0);
String device_id = pointObj.getString("device_id");
// 2 根据设备去找对应的生产任务
JSONObject productTaskObj =
WQLObject.getWQLObject("PDM_MG_produceTask")
.query("device_id ='" + device_id + "' and producetask_status in ('03','02','04')")
.uniqueResult(0);
JSONObject productTaskObj = WQLObject.getWQLObject("PDM_MG_produceTask").query("device_id ='" + device_id + "' and producetask_status in ('03','02','04')").uniqueResult(0);
if (ObjectUtil.isEmpty(productTaskObj)) {
throw new BadRequestException("未找到点位为'" + code + "'的生产任务!");
}

View File

@@ -332,25 +332,17 @@ public class ProducetaskServiceImpl implements ProducetaskService {
if (StrUtil.equals(dto.getDevice_code(), "FJJXS1")
|| StrUtil.equals("FJJXS2", dto.getDevice_code())
|| StrUtil.equals("FJJXS3", dto.getDevice_code())) {
taskObj =
WQL.getWO("PDM_ProduceTask_01")
.addParam("flag", "3")
.addParam("producetask_id", producetask_id)
.process()
.uniqueResult(0);
} else {
taskObj =
WQL.getWO("PDM_ProduceTask_01")
.addParam("flag", "4")
.addParam("producetask_id", producetask_id)
.process()
.uniqueResult(0);
}
String product_code = taskObj.getString("product_code");
taskObj = WQL.getWO("PDM_ProduceTask_01").addParam("flag", "3").addParam("producetask_id", producetask_id).process().uniqueResult(0);
String material_code = taskObj.getString("material_code");
String product_code = taskObj.getString("product_code");
if (ObjectUtil.isEmpty(product_code)) {
throw new BadRequestException("物料【"+material_code+"】的垛形参数未设置!");
}
} else {
taskObj = WQL.getWO("PDM_ProduceTask_01").addParam("flag", "4").addParam("producetask_id", producetask_id).process().uniqueResult(0);
}
taskObj.put("product_type", "wms");
WmsToAcsService wmsToAcsService = SpringContextHolder.getBean(WmsToAcsService.class);

View File

@@ -66,11 +66,7 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
String vehicle_code = jsonTask.getString("vehicle_code");
// 插入刚托盘木托盘表
String point_code = jsonTask.getString("next_point_code");
String area_type =
WQLObject.getWQLObject("sch_base_point")
.query("point_code='" + point_code + "'")
.uniqueResult(0)
.getString("area_type");
String area_type = WQLObject.getWQLObject("sch_base_point").query("point_code='" + point_code + "'").uniqueResult(0).getString("area_type");
if (StrUtil.equals(area_type, AreaEnum.FJQY.getCode())) {
JSONObject jo = new JSONObject();
jo.put("device_code", point_code);
@@ -79,19 +75,13 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
}
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
JSONObject endpointObj =
pointTab
.query("point_code='" + jsonTask.getString("next_point_code") + "'")
.uniqueResult(0);
JSONObject endpointObj = pointTab.query("point_code='" + jsonTask.getString("next_point_code") + "'").uniqueResult(0);
endpointObj.put("lock_type", "00");
endpointObj.put("point_status", "01");
endpointObj.put("vehicle_code", vehicle_code);
endpointObj.put("update_time", DateUtil.now());
pointTab.update(endpointObj);
JSONObject startPointObj =
pointTab
.query("point_code='" + jsonTask.getString("start_point_code") + "'")
.uniqueResult(0);
JSONObject startPointObj = pointTab.query("point_code='" + jsonTask.getString("start_point_code") + "'").uniqueResult(0);
startPointObj.put("lock_type", "00");
startPointObj.put("point_status", "00");
startPointObj.put("vehicle_code", "");
@@ -105,14 +95,7 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
public void findStartPoint() {
String task_status = TaskStatusEnum.SURE_END.getCode();
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
JSONArray taskArry =
taskTab.query(
"task_status='"
+ task_status
+ "' AND handle_class='"
+ THIS_CLASS
+ "' AND is_delete='0' ")
.getResultJSONArray(0);
JSONArray taskArry = taskTab.query("task_status='" + task_status + "' AND handle_class='" + THIS_CLASS + "' AND is_delete='0' ").getResultJSONArray(0);
for (int i = 0; i < taskArry.size(); i++) {
JSONObject taskObj = taskArry.getJSONObject(i);
String task_id = taskObj.getString("task_id");
@@ -131,13 +114,7 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
if (ObjectUtil.isEmpty(inStructObj)) {
throw new BadRequestException("未找到合适的仓位!");
}
JSONObject workInfo =
WQL.getWO("QSTRUCT_RULE")
.addParam("flag", "1")
.addParam("code", next_point_code)
.process()
.uniqueResult(0);
String workprocedure_code = workInfo.getString("workInfo");
JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1").addParam("code", next_point_code).process().uniqueResult(0);
String workprocedure_id = workInfo.getString("workprocedure_id");
WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id);
String start_area = "";
@@ -174,8 +151,7 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
// 起点加锁
HashMap lock_map = new HashMap();
lock_map.put("lock_type", "01");
WQLObject.getWQLObject("sch_base_point")
.update(lock_map, "point_code = '" + start_point_code + "'");
WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + start_point_code + "'");
// 修改任务状态
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
taskObj.put("update_optid", UserInfoUtil.getCurrentUserId());
@@ -186,7 +162,8 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
}
@Override
public void findNextPoint() {}
public void findNextPoint() {
}
@Override
public JSONObject renotifyAcs(String task_id) {
@@ -207,27 +184,14 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
String vehicle_type = form.getString("vehicle_type");
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
// 判断起点有没有未完成的指令
JSONObject beforTaskObj =
taskTable
.query(
"is_delete='0' and next_point_code='"
+ next_point_code
+ "' and task_status <>'"
+ TaskStatusEnum.FINISHED.getCode()
+ "'")
.uniqueResult(0);
JSONObject beforTaskObj = taskTable.query("is_delete='0' and next_point_code='" + next_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(beforTaskObj)) {
throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!");
}
String start_area = "";
// 假如起点为空,根据终点点去找对应工序需要的托盘类型
if (StrUtil.isEmpty(start_point_code)) {
JSONObject workInfo =
WQL.getWO("QSTRUCT_RULE")
.addParam("flag", "1")
.addParam("code", next_point_code)
.process()
.uniqueResult(0);
JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1").addParam("code", next_point_code).process().uniqueResult(0);
String workprocedure_id = workInfo.getString("workprocedure_id");
String device_id = workInfo.getString("device_id");
WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id);
@@ -241,10 +205,7 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
// 分拣工序
case FJGX:
// 托盘类型取的物料对应的木托盘类型
JSONObject produceObj =
WQLObject.getWQLObject("PDM_MG_produceTask")
.query("device_id='" + device_id + "' and producetask_status in('02','03','04')")
.uniqueResult(0);
JSONObject produceObj = WQLObject.getWQLObject("PDM_MG_produceTask").query("device_id='" + device_id + "' and producetask_status in('02','03','04')").uniqueResult(0);
if (ObjectUtil.isEmpty(produceObj))
throw new BadRequestException("设备未设置工单或者工单状态不正确请检查LMS设备工单状态!");
vehicle_type = produceObj.getString("vehicle_type");
@@ -359,16 +320,15 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
@Override
public void forceFinish(String task_id) {
JSONObject taskObj =
WQLObject.getWQLObject("SCH_BASE_Task")
.query("task_id = '" + task_id + "'")
.uniqueResult(0);
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());
}
@Override
public void pullBack(String task_id) {}
public void pullBack(String task_id) {
}
@Override
public void cancel(String task_id) {}
public void cancel(String task_id) {
}
}

View File

@@ -94,21 +94,24 @@ public class CallMaterialTask extends AbstractAcsTask {
throw new BadRequestException("未找到可用点位:" + start_point_code);
}
Long point_id = startPointDto.getPoint_id();
try {
param.put("struct_id", point_id);
ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_IVT);
} catch (Exception e) {
e.printStackTrace();
}
// 解锁仓位,托盘信息,回写到点位上去
String vehicle_code = jsonTask.getString("vehicle_code");
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
JSONObject endpointObj = pointTab
.query("point_code='" + jsonTask.getString("next_point_code") + "'")
.uniqueResult(0);
JSONObject endpointObj = pointTab.query("point_code='" + jsonTask.getString("next_point_code") + "'").uniqueResult(0);
endpointObj.put("lock_type", "00");
endpointObj.put("point_status", "02");
endpointObj.put("vehicle_code", vehicle_code);
endpointObj.put("update_time", DateUtil.now());
pointTab.update(endpointObj);
//// 如果终点是分拣区域,则更新木托盘铁托盘记录表
// 如果终点是分拣区域,则更新木托盘铁托盘记录表
String next_area = nextPointDto.getArea_type();
if (StrUtil.equals(next_area, AreaEnum.FJQY.getCode())) {
// 如果是下料料位置 托盘则是木托盘
@@ -124,22 +127,17 @@ public class CallMaterialTask extends AbstractAcsTask {
// 如果是上料位置 则需要去找点位记录表上的托盘记录
else {
String flag = "8";
if (StrUtil.equals(next_point_code, "FJJXSSLW101")
|| StrUtil.equals(next_point_code, "FJJXSSLW102")) {
if (StrUtil.equals(next_point_code, "FJJXSSLW101") || StrUtil.equals(next_point_code, "FJJXSSLW102")) {
flag = "7";
}
JSONArray paramArr =
WQL.getWO("ACSTOMES_001").addParam("flag", flag).process().getResultJSONArray(0);
JSONArray paramArr = WQL.getWO("ACSTOMES_001").addParam("flag", flag).process().getResultJSONArray(0);
for (int i = 0; i < paramArr.size(); i++) {
JSONObject jo = paramArr.getJSONObject(i);
SortingUtil.record(jo);
}
}
}
JSONObject startPointObj =
pointTab
.query("point_code='" + jsonTask.getString("start_point_code") + "'")
.uniqueResult(0);
JSONObject startPointObj = pointTab.query("point_code='" + jsonTask.getString("start_point_code") + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(startPointObj)) {
// 仓位库存表【ST_IVT_StructIvt】
WQLObject ivtTab = WQLObject.getWQLObject("ST_IVT_StructIvt");
@@ -217,7 +215,8 @@ public class CallMaterialTask extends AbstractAcsTask {
}
@Override
public void findNextPoint() {}
public void findNextPoint() {
}
@Override
public String createTask(JSONObject form) {
@@ -247,14 +246,7 @@ public class CallMaterialTask extends AbstractAcsTask {
throw new BadRequestException("是否满托不能为空!");
}
// 判断终点有没有未完成的指令
JSONObject beforTaskObj =
taskTable
.query(
"is_delete='0' and next_point_code='"
+ next_point_code
+ "' and task_status <>'"
+ TaskStatusEnum.FINISHED.getCode()
+ "'")
JSONObject beforTaskObj = taskTable.query("is_delete='0' and next_point_code='" + next_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'")
.uniqueResult(0);
if (ObjectUtil.isNotEmpty(beforTaskObj)) {
throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!");
@@ -276,10 +268,7 @@ public class CallMaterialTask extends AbstractAcsTask {
IosObj.put("bill_status", "20");
iosTable.update(IosObj);
PointDto StartPoint = pointService.findByCode(start_point_code);
JSONObject ivtObj =
WQLObject.getWQLObject("ST_IVT_StructIvt")
.query("struct_id='" + StartPoint.getPoint_id() + "'")
.uniqueResult(0);
JSONObject ivtObj = WQLObject.getWQLObject("ST_IVT_StructIvt").query("struct_id='" + StartPoint.getPoint_id() + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(ivtObj)) {
throw new BadRequestException("仓位为'" + StartPoint.getPoint_code() + "'的库存信息不存在!");
}
@@ -291,9 +280,7 @@ public class CallMaterialTask extends AbstractAcsTask {
// 如果没给起点,根据终点去找工序,找一个合适的仓位 并且生成入库单,并且锁定点位
if (StrUtil.isEmpty(start_point_code)) {
if (StrUtil.isEmpty(workprocedure_id)) {
JSONObject workInfo =
WQL.getWO("QSTRUCT_RULE")
.addParam("flag", "1")
JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1")
.addParam("code", next_point_code)
.process()
.uniqueResult(0);
@@ -349,96 +336,11 @@ public class CallMaterialTask extends AbstractAcsTask {
param.put("is_full", is_full);
param.put("group_device", group_device);
JSONObject outStructObj = StructFindUtil.getOutStruct(param);
if (ObjectUtil.isEmpty(outStructObj)
&& !StrUtil.equals(ivt_workprocedure_id, WorkProcedureEnum.YZGX.getId())) {
if (ObjectUtil.isEmpty(outStructObj) && !StrUtil.equals(ivt_workprocedure_id, WorkProcedureEnum.YZGX.getId())) {
// 假如没有货,且下料位两个都为空,并且没有执行中的任务 下发acs动作信号
WQLObject point_table = WQLObject.getWQLObject("sch_base_point");
WmsToAcsServiceImpl wmsToAcsService = new WmsToAcsServiceImpl();
// 更新分拣机械手 上下料位置的点位状态
JSONArray parr =
WQL.getWO("ACSTOMES_001")
.addParam("area_type", AreaEnum.FJQY.getCode())
.addParam("flag", "4")
.process()
.getResultJSONArray(0);
// JSONArray parr = point_table.query("area_type ='27'").getResultJSONArray(0);
JSONArray parr = WQL.getWO("ACSTOMES_001").addParam("area_type", AreaEnum.FJQY.getCode()).addParam("flag", "4").process().getResultJSONArray(0);
PointUpdateUtil.updatePoint(parr);
JSONObject nextpointObj =
point_table.query("point_code ='" + next_point_code + "'").uniqueResult(0);
if (StrUtil.equals(nextpointObj.getString("area_type"), "27")) {
// 找拆垛位置的对应的另外一个点位
String other_point_code =
point_table
.query(
"point_code<>'"
+ next_point_code
+ "' "
+ "and device_id='"
+ nextpointObj.getString("device_id")
+ "' and device_point_type='02' ")
.uniqueResult(0)
.getString("point_code");
String point_status01 =
point_table
.query("point_code ='" + next_point_code + "'")
.uniqueResult(0)
.getString("point_status");
String point_status02 =
point_table
.query("point_code ='" + other_point_code + "'")
.uniqueResult(0)
.getString("point_status");
// 没有执行中的任务
WQLObject task_table = WQLObject.getWQLObject("sch_base_task");
JSONObject task1 =
task_table
.query(
"next_point_code ='"
+ next_point_code
+ "' and is_delete='0' and task_status<>'07'")
.uniqueResult(0);
JSONObject task2 =
task_table
.query(
"next_point_code ='"
+ other_point_code
+ "' and is_delete='0' and task_status<>'07'")
.uniqueResult(0);
if (StrUtil.equals(point_status01, "00")
&& StrUtil.equals(point_status02, "00")
&& ObjectUtil.isEmpty(task1)
&& ObjectUtil.isEmpty(task2)) {
JSONObject jo = new JSONObject();
JSONArray arr = new JSONArray();
// jo.put("device_code", "FJJXS1");
// jo.put("code", "to_feedback");
// jo.put("value", "10");
// arr.add(jo);
// wmsToAcsService.action(arr);
}
}
if (StrUtil.equals(next_point_code, "FJJXSSLW301")
|| StrUtil.equals(next_point_code, "FJJXSSLW301")) {
String point_status01 =
point_table
.query("point_code ='FJJXSSLW301'")
.uniqueResult(0)
.getString("point_status");
String point_status02 =
point_table
.query("point_code ='FJJXSSLW301'")
.uniqueResult(0)
.getString("point_status");
if (StrUtil.equals(point_status01, "00") && StrUtil.equals(point_status02, "00")) {
JSONObject jo = new JSONObject();
JSONArray arr = new JSONArray();
// jo.put("device_code", "FJJXS3");
// jo.put("code", "to_feedback");
// jo.put("value", "10");
// arr.add(jo);
// wmsToAcsService.action(arr);
}
}
throw new BadRequestException("未找到合适的出库仓位!");
}
qty = outStructObj.getString("canuse_qty");
@@ -489,8 +391,9 @@ public class CallMaterialTask extends AbstractAcsTask {
// 起点点加锁
HashMap lock_map = new HashMap();
lock_map.put("lock_type", "01");
WQLObject.getWQLObject("sch_base_point")
.update(lock_map, "point_code = '" + start_point_code + "'");
WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + start_point_code + "'");
// 减少库存可用数量
StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl();
JSONObject param = new JSONObject();
@@ -535,8 +438,10 @@ public class CallMaterialTask extends AbstractAcsTask {
}
@Override
public void pullBack(String task_id) {}
public void pullBack(String task_id) {
}
@Override
public void cancel(String task_id) {}
public void cancel(String task_id) {
}
}

View File

@@ -143,9 +143,7 @@ public class FmjToPackIngTask extends AbstractAcsTask {
throw new BadRequestException("起点不能为空!");
}
//判断起点有没有未完成的指令
JSONObject beforTaskObj = taskTable.
query("is_delete='0' and start_point_code='" + start_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'")
.uniqueResult(0);
JSONObject beforTaskObj = taskTable.query("is_delete='0' and start_point_code='" + start_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(beforTaskObj)) {
throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!");
}

View File

@@ -54,20 +54,14 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
// 解锁仓位,托盘信息,回写到点位上去
String vehicle_code = jsonTask.getString("vehicle_code");
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
JSONObject endpointObj =
pointTab
.query("point_code='" + jsonTask.getString("next_point_code") + "'")
.uniqueResult(0);
JSONObject endpointObj = pointTab.query("point_code='" + jsonTask.getString("next_point_code") + "'").uniqueResult(0);
endpointObj.put("lock_type", "00");
endpointObj.put("point_status", "01");
endpointObj.put("vehicle_code", vehicle_code);
endpointObj.put("update_time", DateUtil.now());
pointTab.update(endpointObj);
JSONObject startPointObj =
pointTab
.query("point_code='" + jsonTask.getString("start_point_code") + "'")
.uniqueResult(0);
JSONObject startPointObj = pointTab.query("point_code='" + jsonTask.getString("start_point_code") + "'").uniqueResult(0);
// 调用mes接口
HashMap hashMap = new HashMap();
hashMap.put("vehicle_code", startPointObj.getString("vehicle_code"));
@@ -82,16 +76,17 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
taskTab.update(jsonTask);
// 将组盘表删除
WQLObject.getWQLObject("st_buss_vehiclegroup")
.delete("vehicle_code = '" + vehicle_code + "'");
WQLObject.getWQLObject("st_buss_vehiclegroup").delete("vehicle_code = '" + vehicle_code + "'");
}
}
@Override
public void findStartPoint() {}
public void findStartPoint() {
}
@Override
public void findNextPoint() {}
public void findNextPoint() {
}
@Override
public String createTask(JSONObject form) {
@@ -106,19 +101,11 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
// 假如起点是KTPHCW3就需要送到堆叠位
if (StrUtil.equals(start_point_code, "KTPDDW3")) {
WQLObject point_table = WQLObject.getWQLObject("sch_base_point");
JSONArray pointarr =
WQL.getWO("ACSTOMES_001")
.addParam("area_type", AreaEnum.KTTHCQ.getCode())
.addParam("flag", "4")
.process()
.getResultJSONArray(0);
JSONArray pointarr = WQL.getWO("ACSTOMES_001").addParam("area_type", AreaEnum.KTTHCQ.getCode()).addParam("flag", "4").process().getResultJSONArray(0);
// 更新点位
PointUpdateUtil.updatePoint(pointarr);
// 查询有没有空的点位
JSONObject pointObj =
point_table
.query("area_type='" + AreaEnum.KTTHCQ.getCode() + "' and point_status='00'")
.uniqueResult(0);
JSONObject pointObj = point_table.query("area_type='" + AreaEnum.KTTHCQ.getCode() + "' and point_status='00'").uniqueResult(0);
if (ObjectUtil.isEmpty(pointObj)) {
throw new BadRequestException("未找到合适的点位");
}
@@ -137,19 +124,9 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
if (StrUtil.isEmpty(vehicle_code) || "0000".equals(vehicle_code) || "0".equals(vehicle_code)) {
vehicle_code = startPoint.getVehicle_code();
}
// if (StrUtil.isEmpty(vehicle_code)) {
// throw new BadRequestException("载具未找到!");
// }
// 判断起点有没有未完成的指令
JSONObject beforTaskObj =
taskTable
.query(
"is_delete='0' and start_point_code='"
+ start_point_code
+ "' and task_status <>'"
+ TaskStatusEnum.FINISHED.getCode()
+ "'")
.uniqueResult(0);
JSONObject beforTaskObj = taskTable.query("is_delete='0' and start_point_code='" + start_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(beforTaskObj)) {
throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!");
}
@@ -159,8 +136,7 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
// 锁定终点
HashMap lock_map = new HashMap();
lock_map.put("lock_type", "01");
WQLObject.getWQLObject("sch_base_point")
.update(lock_map, "point_code = '" + next_point_code + "'");
WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + next_point_code + "'");
}
String task_id = IdUtil.getSnowflake(1, 1).nextId() + "";
// 生成任务
@@ -188,16 +164,16 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
@Override
public void forceFinish(String task_id) {
JSONObject taskObj =
WQLObject.getWQLObject("SCH_BASE_Task")
.query("task_id = '" + task_id + "'")
.uniqueResult(0);
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());
}
@Override
public void pullBack(String task_id) {}
public void pullBack(String task_id) {
}
@Override
public void cancel(String task_id) {}
public void cancel(String task_id) {
}
}

View File

@@ -53,8 +53,7 @@ public class SendMaterialTask extends AbstractAcsTask {
map.put("update_optname", UserInfoUtil.getNickName());
map.put("update_time", DateUtil.now());
map.put("bill_status", "40");
WQLObject.getWQLObject("ST_IVT_workProcedureIOS")
.update(map, "task_id='" + jsonTask.getString("task_id") + "'");
WQLObject.getWQLObject("ST_IVT_workProcedureIOS").update(map, "task_id='" + jsonTask.getString("task_id") + "'");
}
if (TaskStatusEnum.FINISHED.getCode().equals(status)) {
@@ -105,20 +104,14 @@ public class SendMaterialTask extends AbstractAcsTask {
// 解锁仓位,托盘信息,回写到点位上去
String vehicle_code = jsonTask.getString("vehicle_code");
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
JSONObject endpointObj =
pointTab
.query("point_code='" + jsonTask.getString("next_point_code") + "'")
.uniqueResult(0);
JSONObject endpointObj = pointTab.query("point_code='" + jsonTask.getString("next_point_code") + "'").uniqueResult(0);
endpointObj.put("lock_type", "00");
endpointObj.put("point_status", "02");
endpointObj.put("vehicle_code", vehicle_code);
endpointObj.put("update_time", DateUtil.now());
pointTab.update(endpointObj);
JSONObject startPointObj =
pointTab
.query("point_code='" + jsonTask.getString("start_point_code") + "'")
.uniqueResult(0);
JSONObject startPointObj = pointTab.query("point_code='" + jsonTask.getString("start_point_code") + "'").uniqueResult(0);
startPointObj.put("lock_type", "00");
startPointObj.put("point_status", "00");
@@ -148,7 +141,8 @@ public class SendMaterialTask extends AbstractAcsTask {
}
@Override
public void findStartPoint() {}
public void findStartPoint() {
}
@Override
public void findNextPoint() {
@@ -183,8 +177,7 @@ public class SendMaterialTask extends AbstractAcsTask {
// 终点加锁
HashMap lock_map = new HashMap();
lock_map.put("lock_type", "01");
WQLObject.getWQLObject("sch_base_point")
.update(lock_map, "point_code = '" + inStructObj.getString("struct_code") + "'");
WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + inStructObj.getString("struct_code") + "'");
// 修改任务状态
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
taskObj.put("update_optid", UserInfoUtil.getCurrentUserId());
@@ -216,17 +209,9 @@ public class SendMaterialTask extends AbstractAcsTask {
throw new BadRequestException("起点不能为空!");
}
// 判断起点有没有未完成的指令
JSONObject beforTaskObj =
taskTable
.query(
"is_delete='0' and start_point_code='"
+ start_point_code
+ "' and task_status <>'"
+ TaskStatusEnum.FINISHED.getCode()
+ "'")
.uniqueResult(0);
JSONObject beforTaskObj = taskTable.query("is_delete='0' and start_point_code='" + start_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(beforTaskObj)) {
// throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!");
throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!");
}
PointService pointService = SpringContextHolder.getBean(PointService.class);
PointDto startPoint = pointService.findByCode(start_point_code);
@@ -259,12 +244,7 @@ public class SendMaterialTask extends AbstractAcsTask {
if (StrUtil.isEmpty(is_full)) {
throw new BadRequestException("是否满托不能为空!");
}
JSONObject workInfo =
WQL.getWO("QSTRUCT_RULE")
.addParam("flag", "1")
.addParam("code", start_point_code)
.process()
.uniqueResult(0);
JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1").addParam("code", start_point_code).process().uniqueResult(0);
String workprocedure_id = workInfo.getString("workprocedure_id");
WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id);
// 用于判断是不是压制工序,
@@ -301,14 +281,9 @@ public class SendMaterialTask extends AbstractAcsTask {
next_point_code = inStructObj.getString("struct_code");
// 创建入库单据
// 假如静置时间为0 或者为空,则取物料表上的静置时间
if (StrUtil.isEmpty(stewing_time)
|| StrUtil.equals(stewing_time, "0")
|| "0.0".equals(stewing_time)) {
if (StrUtil.isEmpty(stewing_time) || StrUtil.equals(stewing_time, "0") || "0.0".equals(stewing_time)) {
stewing_time =
WQLObject.getWQLObject("md_me_material")
.query("material_id ='" + material_id + "'")
.uniqueResult(0)
.getString("stewing_time");
WQLObject.getWQLObject("md_me_material").query("material_id ='" + material_id + "'").uniqueResult(0).getString("stewing_time");
}
// 假如是烧制工序静置时间都是0
if (StrUtil.equals(workProcedureEnum.getCode(), WorkProcedureEnum.SZGX.getCode())) {
@@ -349,8 +324,7 @@ public class SendMaterialTask extends AbstractAcsTask {
// 终点点加锁
HashMap lock_map = new HashMap();
lock_map.put("lock_type", "01");
WQLObject.getWQLObject("sch_base_point")
.update(lock_map, "point_code = '" + next_point_code + "'");
WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + next_point_code + "'");
JSONObject taskObj = new JSONObject();
taskObj.put("task_id", task_id);
taskObj.put("task_code", IdUtil.getSnowflake(1, 1).nextId() + "");
@@ -372,12 +346,7 @@ public class SendMaterialTask extends AbstractAcsTask {
taskTable.insert(taskObj);
// 如果是压料制下,或者是分拣送料需要更新组盘信息将task_id 更新
JSONObject workInfo =
WQL.getWO("QSTRUCT_RULE")
.addParam("flag", "1")
.addParam("code", start_point_code)
.process()
.uniqueResult(0);
JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1").addParam("code", start_point_code).process().uniqueResult(0);
if (StrUtil.equals(WorkProcedureEnum.YZGX.getCode(), workInfo.getString("workprocedure_code"))
|| StrUtil.equals(WorkProcedureEnum.FJGX.getCode(), workInfo.getString("workprocedure_code"))) {
WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup");
@@ -393,15 +362,13 @@ public class SendMaterialTask extends AbstractAcsTask {
@Override
public void forceFinish(String task_id) {
JSONObject taskObj =
WQLObject.getWQLObject("SCH_BASE_Task")
.query("task_id = '" + task_id + "'")
.uniqueResult(0);
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());
}
@Override
public void pullBack(String task_id) {}
public void pullBack(String task_id) {
}
@Override
public void cancel(String task_id) {

View File

@@ -20,10 +20,14 @@ import org.springframework.stereotype.Service;
import java.util.HashMap;
/**
* 压机到货架
*/
@Service
@Slf4j
public class ToConveyorTask extends AbstractAcsTask {
private final String THIS_CLASS = ToConveyorTask.class.getName();
@Override
public void updateTaskStatus(JSONObject taskObj, String status) {
/**
@@ -36,15 +40,8 @@ public class ToConveyorTask extends AbstractAcsTask {
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
//更新任务状态为执行中
jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
jsonTask.put("update_time", DateUtil.now());
taskTab.update(jsonTask);
HashMap map = new HashMap();
map.put("update_optid", UserInfoUtil.getCurrentUserId());
map.put("update_optname", UserInfoUtil.getNickName());
map.put("update_time", DateUtil.now());
map.put("bill_status", "40");
WQLObject.getWQLObject("ST_IVT_workProcedureIOS").update(map, "task_id='" + jsonTask.getString("task_id") + "'");
}
if (TaskStatusEnum.FINISHED.getCode().equals(status)) {
@@ -56,7 +53,6 @@ public class ToConveyorTask extends AbstractAcsTask {
jsonTask.put("remark", "任务执行完成");
taskTab.update(jsonTask);
//调用接口反馈给嘉耐 搬运任务
JSONObject param = new JSONObject();
param.put("task_id", task_id);
WmsToJnService wmsToJnService = new WmsToJnServiceImpl();
@@ -80,10 +76,6 @@ public class ToConveyorTask extends AbstractAcsTask {
String vehicle_code = form.getString("vehicle_code");
String start_point_code = form.getString("start_point_code");
String next_point_code = form.getString("next_point_code");
String material_id = form.getString("material_id");
String is_full = form.getString("is_full");
String qty = form.getString("qty");
String pcsn = form.getString("pcsn");
String group_id = form.getString("group_id");
WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task");
@@ -94,18 +86,11 @@ public class ToConveyorTask extends AbstractAcsTask {
throw new BadRequestException("终点不能为空!");
}
//判断起点有没有未完成的指令
JSONObject beforTaskObj = taskTable.
query("is_delete='0' and start_point_code='" + start_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'")
.uniqueResult(0);
JSONObject beforTaskObj = taskTable.query("is_delete='0' and start_point_code='" + start_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(beforTaskObj)) {
throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!");
}
String is_autopackage = "1";
if (StrUtil.equals(start_point_code, "MDJXS601")) {
is_autopackage = "0";
}
String task_id = IdUtil.getSnowflake(1, 1).nextId() + "";
JSONObject materialObj = WQLObject.getWQLObject("md_me_material").query("material_id='" + material_id + "'").uniqueResult(0);
//更新组盘信息将task_id 更新
WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup");
JSONObject groupInfo = groupTable.query("group_id='" + group_id + "'").uniqueResult(0);

View File

@@ -42,8 +42,7 @@ public class ToPackIngTask extends AbstractAcsTask {
map.put("update_optname", UserInfoUtil.getNickName());
map.put("update_time", DateUtil.now());
map.put("bill_status", "40");
WQLObject.getWQLObject("ST_IVT_workProcedureIOS")
.update(map, "task_id='" + jsonTask.getString("task_id") + "'");
WQLObject.getWQLObject("ST_IVT_workProcedureIOS").update(map, "task_id='" + jsonTask.getString("task_id") + "'");
}
if (TaskStatusEnum.FINISHED.getCode().equals(status)) {
@@ -55,10 +54,7 @@ public class ToPackIngTask extends AbstractAcsTask {
taskTab.update(jsonTask);
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
// 将起点的载具清除
JSONObject startPointObj =
pointTab
.query("point_code='" + jsonTask.getString("start_point_code") + "'")
.uniqueResult(0);
JSONObject startPointObj = pointTab.query("point_code='" + jsonTask.getString("start_point_code") + "'").uniqueResult(0);
// 假如起点是码垛位置则不需要更新
if (!(StrUtil.equals(jsonTask.getString("start_point_code"), "FJJXSXLW201")
|| StrUtil.equals(jsonTask.getString("start_point_code"), "FJJXSXLW202")
@@ -75,16 +71,11 @@ public class ToPackIngTask extends AbstractAcsTask {
HashMap map = new HashMap();
map.put("vehicle_code", jsonTask.getString("vehicle_code"));
WmsToJnServiceImpl wmsToJnServiceImpl = new WmsToJnServiceImpl();
wmsToJnServiceImpl.feedBackPackage(map);
// 将组盘表删除
WQLObject group_Table = WQLObject.getWQLObject("st_buss_vehiclegroup");
JSONObject groupObj =
group_Table
.query("vehicle_code='" + jsonTask.getString("vehicle_code") + "' and is_delete='0'")
.uniqueResult(0);
JSONObject groupObj = group_Table.query("vehicle_code='" + jsonTask.getString("vehicle_code") + "' and is_delete='0'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(groupObj)) {
groupObj.put("is_delete", "0");
group_Table.update(groupObj);
@@ -93,10 +84,12 @@ public class ToPackIngTask extends AbstractAcsTask {
}
@Override
public void findStartPoint() {}
public void findStartPoint() {
}
@Override
public void findNextPoint() {}
public void findNextPoint() {
}
@Override
public String createTask(JSONObject form) {
@@ -104,11 +97,6 @@ public class ToPackIngTask extends AbstractAcsTask {
String vehicle_code = form.getString("vehicle_code");
String start_point_code = form.getString("start_point_code");
String next_point_code = "BZSLW";
String material_id = form.getString("material_id");
String is_full = form.getString("is_full");
String qty = form.getString("qty");
String pcsn = form.getString("pcsn");
String group_id = form.getString("group_id");
WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task");
if (StrUtil.isEmpty(start_point_code)) {
throw new BadRequestException("起点不能为空!");
@@ -117,15 +105,7 @@ public class ToPackIngTask extends AbstractAcsTask {
throw new BadRequestException("终点不能为空!");
}
// 判断起点有没有未完成的指令
JSONObject beforTaskObj =
taskTable
.query(
"is_delete='0' and start_point_code='"
+ start_point_code
+ "' and task_status <>'"
+ TaskStatusEnum.FINISHED.getCode()
+ "'")
.uniqueResult(0);
JSONObject beforTaskObj = taskTable.query("is_delete='0' and start_point_code='" + start_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(beforTaskObj)) {
throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!");
}
@@ -158,16 +138,15 @@ public class ToPackIngTask extends AbstractAcsTask {
@Override
public void forceFinish(String task_id) {
JSONObject taskObj =
WQLObject.getWQLObject("SCH_BASE_Task")
.query("task_id = '" + task_id + "'")
.uniqueResult(0);
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());
}
@Override
public void pullBack(String task_id) {}
public void pullBack(String task_id) {
}
@Override
public void cancel(String task_id) {}
public void cancel(String task_id) {
}
}

View File

@@ -61,12 +61,6 @@ public class KilnServiceImpl implements KilnService {
WQLObject materialTab = WQLObject.getWQLObject("MD_ME_Material");
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point");
WQLObject workProcedureTab = WQLObject.getWQLObject("PDM_BASE_workProcedure");
// 共用对象
JSONObject vehicleGroupObj = null; // 组盘信息
if (ObjectUtil.isNotEmpty(vehicle_code)) {
vehicleGroupObj = vehicleGroupTab.query("vehicle_code = '" + vehicle_code + "'").uniqueResult(0);
}
JSONObject materialObj = null; // 物料信息
if (ObjectUtil.isNotEmpty(material_id)) { // 获取物料对象
materialObj = materialTab.query("material_id = '" + jsonObject.getString("material_id") + "'").uniqueResult(0);
@@ -100,6 +94,9 @@ public class KilnServiceImpl implements KilnService {
workprocedure_id = workprocedureObj.getString("workprocedure_id");
}
//先删除库存 永远插入库存
structIvtTab.delete("struct_id = '"+jsonObject.getString("struct_id")+"'");
stockrecordId="";
if (ObjectUtil.isEmpty(stockrecordId)) { // 仓位库存id为空就插入
JSONObject structIvt = new JSONObject();
structIvt.put("stockrecord_id", IdUtil.getSnowflake(1, 1).nextId());
@@ -139,9 +136,14 @@ public class KilnServiceImpl implements KilnService {
structIvt.put("instorage_time", DateUtil.now());
structIvtTab.update(structIvt);
}
// 组盘表
// 存在相应载具的话删掉在存
if (ObjectUtil.isNotEmpty(vehicle_code)) vehicleGroupTab.delete("vehicle_code = '" + vehicle_code + "'");
if (ObjectUtil.isNotEmpty(vehicle_code)) {
vehicleGroupTab.delete("vehicle_code = '" + vehicle_code + "'");
structIvtTab.delete("vehicle_code <> '" + vehicle_code + "' and struct_id = '"+jsonObject.getString("struct_id")+"'");
}
JSONObject vehicleGroup = new JSONObject();
vehicleGroup.put("group_id", IdUtil.getSnowflake(1, 1).nextId());
vehicleGroup.put("vehicle_code", vehicle_code);

View File

@@ -51,11 +51,6 @@ spring:
wall:
config:
multi-statement-allow: true
# data:
# mongodb:
# host: 127.0.0.1
# port: 27017
# database: logdb
redis:
#数据库索引
database: ${REDIS_DB:0}
@@ -64,6 +59,16 @@ spring:
password: ${REDIS_PWD:}
#连接超时时间
timeout: 5000
redisson:
config: |
threads: 4
nettyThreads: 4
singleServerConfig:
connectionMinimumIdleSize: 8
connectionPoolSize: 8
address: redis://127.0.0.1:6379
idleConnectionTimeout: 10000
timeout: 3000
# 登录相关配置
login:
# 登录缓存

View File

@@ -56,11 +56,6 @@ spring:
wall:
config:
multi-statement-alagvslow: true
data:
mongodb:
host: 192.168.81.251
port: 27017
database: nlacs
redis:
#数据库索引

View File

@@ -2,7 +2,7 @@ spring:
freemarker:
check-template-location: false
profiles:
active: prod
active: dev
jackson:
time-zone: GMT+8
data:

View File

@@ -197,6 +197,23 @@
/>
</el-select>
</el-form-item>
<el-form-item label="是否启用">
<el-select
v-model="query.is_used"
style="width: 370px"
placeholder="是否启用"
class="filter-item"
>
<el-option
v-for="item in dict.is_used"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item v-if="form.point_type=='03'" label="所属设备" prop="device_id">
<el-select v-model="form.device_id" filterable placeholder="请选择" style="width: 370px;">
<el-option