修改提交
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package org.nl.start;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.quartz.domain.QuartzJob;
|
||||
@@ -7,7 +9,9 @@ import org.nl.modules.quartz.repository.QuartzJobRepository;
|
||||
import org.nl.modules.quartz.utils.QuartzManage;
|
||||
import org.nl.start.auto.initial.ApplicationAutoInitialExecuter;
|
||||
import org.nl.start.auto.initial.WebAutoInitialExecuter;
|
||||
import org.nl.wms.common.KilnUtil;
|
||||
import org.nl.wql.WQLCore;
|
||||
import org.nl.wql.core.bean.WQLObject;
|
||||
import org.springframework.boot.ApplicationArguments;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -39,6 +43,13 @@ public class Init implements ApplicationRunner {
|
||||
initQuartz();
|
||||
isStart = true;
|
||||
System.out.println("系统启动成功!");
|
||||
//将窑设备的信息导入内存中
|
||||
/* JSONArray kilnarr = WQLObject.getWQLObject("pdm_bi_kilnrecord").query("out_time<>''", "in_time ").getResultJSONArray(0);
|
||||
for (int i = 0; i <kilnarr.size() ; i++) {
|
||||
JSONObject kilnjo = kilnarr.getJSONObject(i);
|
||||
String vehicle_code = kilnjo.getString("vehicle_code");
|
||||
KilnUtil.KilnQueue.offer(vehicle_code);
|
||||
}*/
|
||||
}
|
||||
private void initQuartz() {
|
||||
log.info("--------------------注入定时任务---------------------");
|
||||
|
||||
@@ -3,7 +3,7 @@ package org.nl.wms.buss.service;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
/**
|
||||
* 压制工序主要包含压制叫料、送空料盅。呼叫钢托盘、送半成品业务
|
||||
*
|
||||
*/
|
||||
public interface SuppressBuss {
|
||||
/**
|
||||
|
||||
@@ -11,7 +11,7 @@ import java.util.Queue;
|
||||
import java.util.concurrent.ArrayBlockingQueue;
|
||||
|
||||
public class KilnUtil {
|
||||
static Queue<String> KilnQueue = new ArrayBlockingQueue<>(10);
|
||||
public static Queue<String> KilnQueue = new ArrayBlockingQueue<>(10);
|
||||
//入窑扫码
|
||||
public static void inKiln(String vehicle_code) {
|
||||
KilnQueue.offer(vehicle_code);
|
||||
@@ -42,7 +42,7 @@ public class KilnUtil {
|
||||
KilnQueue.offer(vehicle_code);
|
||||
//更新窑设备记录表
|
||||
WQLObject recordTable = WQLObject.getWQLObject("pdm_bi_kilnrecord");
|
||||
JSONObject vehicleObj = recordTable.query("vehicle_code='" + vehicle_code + " and out_time ='''").uniqueResult(0);
|
||||
JSONObject vehicleObj = recordTable.query("vehicle_code='"+vehicle_code+"'and out_time=''").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(vehicleObj)) {
|
||||
throw new BadRequestException("未找到信息");
|
||||
}
|
||||
|
||||
@@ -12,20 +12,25 @@ public class PointUpdateUtil {
|
||||
public static void updatePoint(JSONArray arr) {
|
||||
WmsToAcsServiceImpl wmsToAcsServiceImpl = new WmsToAcsServiceImpl();
|
||||
|
||||
//JSONObject joo = wmsToAcsServiceImpl.queryPointStatus(arr);
|
||||
//JSONArray pointarr = joo.getJSONArray("arr");
|
||||
JSONObject joo = wmsToAcsServiceImpl.queryPointStatus(arr);
|
||||
JSONArray pointarr = joo.getJSONArray("data");
|
||||
|
||||
JSONArray pointarr =new JSONArray();
|
||||
//JSONArray pointarr =new JSONArray();
|
||||
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
|
||||
for (int i = 0; i < pointarr.size(); i++) {
|
||||
JSONObject pointjo = pointarr.getJSONObject(i);
|
||||
String point_status = "00";
|
||||
String vehicle_code = pointjo.getString("vehicle_code");
|
||||
if (StrUtil.isNotEmpty(vehicle_code)) {
|
||||
point_status = "02";
|
||||
}
|
||||
//String point_status = "00";
|
||||
String point_status = "0"+pointjo.getString("move");
|
||||
//String vehicle_code = pointjo.getString("vehicle_code");
|
||||
String vehicle_code = pointjo.getString("barcode");
|
||||
String device_code = pointjo.getString("device_code");
|
||||
String pallet_type =pointjo.getString("pallet_type");
|
||||
pointjo.put("point_status", point_status);
|
||||
pointTable.update(pointjo);
|
||||
JSONObject pointObj = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0);
|
||||
pointObj.put("vehicle_code",vehicle_code);
|
||||
pointObj.put("point_status",point_status);
|
||||
pointObj.put("vehicle_type",pallet_type);
|
||||
pointTable.update(pointObj);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ public class StructFindUtil {
|
||||
public static JSONObject getInStruct(JSONObject jsonObject) {
|
||||
String material_id = jsonObject.getString("material_id");
|
||||
String area_type = jsonObject.getString("area_type");
|
||||
String vehicle_code = jsonObject.getString("vehicle_code");
|
||||
/* String vehicle_code = jsonObject.getString("vehicle_code");
|
||||
if (StrUtil.isEmpty(vehicle_code)) {
|
||||
throw new BadRequestException("托盘不能为空!");
|
||||
}
|
||||
@@ -22,16 +22,16 @@ public class StructFindUtil {
|
||||
JSONObject vehicleObj = WQLObject.getWQLObject("md_pb_vehicle").query("vehicle_code='" + vehicle_code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(vehicleObj)) {
|
||||
throw new BadRequestException("未找到托盘号为'" + vehicle_code + "' 托盘信息!");
|
||||
}
|
||||
}*/
|
||||
if (StrUtil.isEmpty(material_id)) {
|
||||
throw new BadRequestException("物料不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(area_type)) {
|
||||
throw new BadRequestException("区域不能为空!");
|
||||
}
|
||||
String vehice_type = vehicleObj.getString("vehicle_type");
|
||||
// String vehice_type = vehicleObj.getString("vehicle_type");
|
||||
JSONObject result = WQL.getWO("QSTRUCT_RULE").addParam("flag", "2")
|
||||
.addParam("material_id", material_id).addParam("area_type", area_type).addParam("vehice_type", vehice_type).process().uniqueResult(0);
|
||||
.addParam("material_id", material_id).addParam("area_type", area_type).process().uniqueResult(0);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -93,9 +93,16 @@ public class StructFindUtil {
|
||||
|
||||
//获取空闲的输送线的上料位
|
||||
public static JSONObject getConveyor(JSONObject jsonObject) {
|
||||
JSONObject result = new JSONObject();
|
||||
//判断现在是否能去输送线
|
||||
WQLObject param_Table = WQLObject.getWQLObject("sys_param");
|
||||
String is_canToConveyor = param_Table.query("code='is_canToConveyor'").uniqueResult(0).getString("value");
|
||||
if (StrUtil.equals(is_canToConveyor, "0")) {
|
||||
return result;
|
||||
}
|
||||
String material_id = jsonObject.getString("material_id");
|
||||
//判断入输送线的规则有没有开启,假如开启需要带上物料,没有开启不需要带上物料
|
||||
String value = WQLObject.getWQLObject("sys_param").query("code='is_inrule'").uniqueResult(0).getString("value");
|
||||
String value = param_Table.query("code='is_inrule'").uniqueResult(0).getString("value");
|
||||
if (StrUtil.equals(value, "0")) {
|
||||
material_id = "";
|
||||
}
|
||||
@@ -104,7 +111,6 @@ public class StructFindUtil {
|
||||
//获取可以用的输送线数组
|
||||
JSONArray deviceArr = WQL.getWO("QSTRUCT_RULE").addParam("flag", "6")
|
||||
.addParam("material_id", material_id).process().getResultJSONArray(0);
|
||||
JSONObject result = new JSONObject();
|
||||
for (int i = 0; i < deviceArr.size(); i++) {
|
||||
JSONObject deviceObj = deviceArr.getJSONObject(i);
|
||||
int count = deviceObj.getIntValue("count");
|
||||
@@ -120,5 +126,26 @@ public class StructFindUtil {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static JSONObject getEmptyMto(JSONObject jsonObject) {
|
||||
String area_type = jsonObject.getString("area_type");
|
||||
String vehicle_type = jsonObject.getString("vehicle_type");
|
||||
if (StrUtil.isEmpty(vehicle_type)) {
|
||||
throw new BadRequestException("木托盘类型不能为空!");
|
||||
}
|
||||
JSONObject result = WQL.getWO("QSTRUCT_RULE").addParam("flag", "5")
|
||||
.addParam("area_type", area_type).addParam("vehicle_type", vehicle_type).process().uniqueResult(0);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static JSONObject getOutCacheStruct() {
|
||||
//找一个可以入库的入窑缓存货位
|
||||
String area_type = "01";
|
||||
String is_full = "1";
|
||||
JSONObject result = WQL.getWO("QSTRUCT_RULE").addParam("flag", "9")
|
||||
.addParam("area_type", area_type)
|
||||
.addParam("is_full", is_full)
|
||||
.process().uniqueResult(0);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -236,4 +236,91 @@ IF 输入.flag = "7"
|
||||
ENDOPTION
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
|
||||
IF 输入.flag = "8"
|
||||
QUERY
|
||||
SELECT DISTINCT
|
||||
point.point_id AS struct_id,
|
||||
point.point_code AS struct_code,
|
||||
point.point_name AS struct_name,
|
||||
point.vehicle_code
|
||||
FROM
|
||||
sch_base_point point
|
||||
LEFT JOIN md_pb_vehicle vehicle ON vehicle.vehicle_code = point.vehicle_code
|
||||
AND point.vehicle_code <> ''
|
||||
WHERE
|
||||
point.lock_type = '00'
|
||||
AND point.point_status = '01'
|
||||
OPTION 输入.area_type <> ""
|
||||
point.area_type = 输入.area_type
|
||||
ENDOPTION
|
||||
OPTION 输入.vehicle_type <> ""
|
||||
vehicle.vehicle_type = 输入.vehicle_type
|
||||
ENDOPTION
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
|
||||
|
||||
|
||||
IF 输入.flag = "9"
|
||||
QUERY
|
||||
SELECT DISTINCT
|
||||
point.point_code AS struct_code,
|
||||
point.point_id AS struct_id,
|
||||
point.point_name AS struct_name,
|
||||
point.vehicle_code,
|
||||
ivt.canuse_qty,
|
||||
ivt.workprocedure_id,
|
||||
ivt.qty_unit_id,
|
||||
ruledis.out_seq_no,
|
||||
material.material_id,
|
||||
material.material_code,
|
||||
material.material_name,
|
||||
material.material_spec
|
||||
FROM
|
||||
st_ivt_structivt ivt
|
||||
LEFT JOIN sch_base_point point ON point.point_id = ivt.struct_id
|
||||
LEFT JOIN st_rule_IOdisStruct ruledis ON ruledis.struct_uuid = ivt.struct_id
|
||||
LEFT JOIN md_me_material material ON material.material_id = ivt.material_id
|
||||
WHERE
|
||||
ivt.canuse_qty > 0
|
||||
AND point.point_status = '02'
|
||||
AND point.lock_type = '00'
|
||||
AND point.is_used = '1'
|
||||
and TIME_TO_SEC(timediff(now(),ivt.instorage_time)) >=ivt.stewing_time*60
|
||||
OPTION 输入.area_type <> ""
|
||||
point.area_type = 输入.area_type
|
||||
ENDOPTION
|
||||
OPTION 输入.is_full <> ""
|
||||
ivt.is_full = 输入.is_full
|
||||
ENDOPTION
|
||||
order by ruledis.out_seq_no
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "10"
|
||||
QUERY
|
||||
SELECT
|
||||
count(*) as num
|
||||
FROM
|
||||
st_ivt_structivt ivt
|
||||
LEFT JOIN sch_base_point point ON point.point_id = ivt.struct_id
|
||||
left join st_rule_IOdisStruct ruledis on ruledis.struct_uuid = ivt.struct_id
|
||||
WHERE
|
||||
ivt.canuse_qty > 0
|
||||
AND point.point_status = '02'
|
||||
AND point.lock_type = '00'
|
||||
AND point.is_used ='1'
|
||||
and TIME_TO_SEC(timediff(now(),ivt.instorage_time)) >=ivt.stewing_time*60
|
||||
and point.area_type='01'
|
||||
and ivt.is_full='1'
|
||||
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
|
||||
@@ -33,30 +33,30 @@ public class AcsToWmsController {
|
||||
@Log("ACS给WMS发送任务")
|
||||
@ApiOperation("ACS给WMS发送任务")
|
||||
public ResponseEntity<Object> receiveTaskFromAcs(@RequestBody Map whereJson) {
|
||||
acsToWmsService.receiveTaskFromAcs(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
return new ResponseEntity<>( acsToWmsService.receiveTaskFromAcs(whereJson),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/manipulatorApply")
|
||||
@Log("ACS机械手给WMS发送任务")
|
||||
@ApiOperation("ACS机械手给WMS发送任务")
|
||||
public ResponseEntity<Object> manipulatorApply(@RequestBody Map whereJson) {
|
||||
acsToWmsService.manipulatorApply(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
|
||||
return new ResponseEntity<>( acsToWmsService.manipulatorApply(whereJson),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/group")
|
||||
@Log("ACS扫码器入库组盘")
|
||||
@ApiOperation("ACS扫码器组盘")
|
||||
public ResponseEntity<Object> group(@RequestBody Map whereJson) {
|
||||
acsToWmsService.group(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
return new ResponseEntity<>( acsToWmsService.group(whereJson),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/inKiln")
|
||||
@Log("入窑扫码器")
|
||||
@ApiOperation("入窑扫码器")
|
||||
public ResponseEntity<Object> inKiln(@RequestBody Map whereJson) {
|
||||
acsToWmsService.inKiln(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
|
||||
return new ResponseEntity<>( acsToWmsService.inKiln(whereJson),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/ispackage")
|
||||
@@ -91,8 +91,8 @@ public class AcsToWmsController {
|
||||
@Log("排产单确认")
|
||||
@ApiOperation("排产单确认")
|
||||
public ResponseEntity<Object> sureProduceTask(@RequestBody Map whereJson) {
|
||||
acsToWmsService.sureProduceTask(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
|
||||
return new ResponseEntity<>(acsToWmsService.sureProduceTask(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/updateVehicleType")
|
||||
@@ -106,7 +106,7 @@ public class AcsToWmsController {
|
||||
@PostMapping("/status")
|
||||
@Log("ACS给WMS反馈任务状态")
|
||||
@ApiOperation("ACS给WMS反馈任务状态")
|
||||
public ResponseEntity<Object> receiveTaskStatusAcs(@RequestBody String string) {
|
||||
public ResponseEntity<Object> receiveTaskStatusAcs(@RequestBody String string) {
|
||||
return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ public interface AcsToWmsService {
|
||||
* @return Map<String, Object>
|
||||
*/
|
||||
|
||||
void receiveTaskFromAcs(Map jsonObject);
|
||||
Map<String, Object> receiveTaskFromAcs(Map jsonObject);
|
||||
/**
|
||||
* ACS客户端--->WMS服务端
|
||||
* ACS机械手给WMS发送任务
|
||||
@@ -21,7 +21,7 @@ public interface AcsToWmsService {
|
||||
* @return Map<String, Object>
|
||||
*/
|
||||
|
||||
void manipulatorApply(Map jsonObject);
|
||||
Map<String, Object> manipulatorApply(Map jsonObject);
|
||||
/**
|
||||
* ACS客户端--->WMS服务端
|
||||
* ACS机械手给WMS发送任务
|
||||
@@ -30,7 +30,7 @@ public interface AcsToWmsService {
|
||||
* @return Map<String, Object>
|
||||
*/
|
||||
|
||||
void group(Map jsonObject);
|
||||
Map<String, Object> group(Map jsonObject);
|
||||
/**
|
||||
* 入窑扫码器
|
||||
*
|
||||
@@ -79,7 +79,7 @@ public interface AcsToWmsService {
|
||||
* @return Map<String, Object>
|
||||
*/
|
||||
|
||||
void sureProduceTask(Map jsonObject);
|
||||
Map<String, Object> sureProduceTask(Map jsonObject);
|
||||
|
||||
void updateVehicleType(Map jsonObject);
|
||||
/**
|
||||
|
||||
@@ -24,6 +24,7 @@ import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.manage.buss.*;
|
||||
import org.nl.wms.sch.service.TaskService;
|
||||
import org.nl.wms.sch.service.dto.TaskDto;
|
||||
import org.nl.wms.sch.task.AcsTaskDto;
|
||||
import org.nl.wql.WQL;
|
||||
import org.nl.wql.core.bean.WQLObject;
|
||||
import org.springframework.http.HttpStatus;
|
||||
@@ -46,14 +47,18 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
private final WmsToAcsServiceImpl wmsToAcsServiceImpl;
|
||||
private final ToConveyorTask toConveyorTask;
|
||||
private final TaskService taskService;
|
||||
private final ToPackIngTask toPackIngTask;
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void receiveTaskFromAcs(Map jsonObject) {
|
||||
public Map<String, Object> receiveTaskFromAcs(Map jsonObject) {
|
||||
log.debug("WCS的请求参数为:" + jsonObject);
|
||||
String device_code = (String) jsonObject.get("device_code");
|
||||
String type = (String) jsonObject.get("type");
|
||||
String group_id = (String) jsonObject.get("group_id");
|
||||
String is_full = (String) jsonObject.get("is_full");
|
||||
|
||||
JSONObject produceInfoByCode = new JSONObject();
|
||||
if (StrUtil.isEmpty(device_code)) {
|
||||
throw new BadRequestException("设备不能为空!");
|
||||
@@ -67,28 +72,34 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
case "1":
|
||||
jsonObject.put("start_point_code", device_code);
|
||||
jsonObject.put("create_mode", "01");
|
||||
String product_code = (String) jsonObject.get("product_code");
|
||||
|
||||
if (StrUtil.isEmpty(is_full)) {
|
||||
throw new BadRequestException("托盘是否满托不能为空!");
|
||||
}
|
||||
String material_code = (String) jsonObject.get("material_code");
|
||||
String pcsn = (String) jsonObject.get("pcsn");
|
||||
if (StrUtil.isEmpty(product_code)) {
|
||||
String material_id = "";
|
||||
JSONObject materialObj = WQLObject.getWQLObject("md_me_material").query("material_code ='" + material_code + "'").uniqueResult(0);
|
||||
if (StrUtil.isEmpty(material_code) && (!StrUtil.equals(device_code, "CYSSX101"))) {
|
||||
throw new BadRequestException("物料不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(pcsn)) {
|
||||
throw new BadRequestException("批次不能为空!");
|
||||
if (!StrUtil.equals(device_code, "CYSSX101")) {
|
||||
material_id = materialObj.getString("material_id");
|
||||
}
|
||||
JSONObject materialObj = WQLObject.getWQLObject("md_me_material").query("material_code ='" + product_code + "'").uniqueResult(0);
|
||||
String material_id = materialObj.getString("material_id");
|
||||
//如果是出窑输送线 要从组盘表里面去找物料
|
||||
if (StrUtil.equals(device_code, "CYSSX101")) {
|
||||
String vehicle_code = (String) jsonObject.get("vehicle_code");
|
||||
if (StrUtil.isEmpty(vehicle_code)) {
|
||||
throw new BadRequestException("载具不能为空!");
|
||||
}
|
||||
JSONObject vehicleObj = WQLObject.getWQLObject("st_buss_vehiclegroup").query("vehicle_code='" + vehicle_code + "'").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 + "'的组盘信息!");
|
||||
}
|
||||
material_id = vehicleObj.getString("material_id");
|
||||
pcsn = vehicleObj.getString("pcsn");
|
||||
jsonObject.put("qty", vehicleObj.getString("qty"));
|
||||
jsonObject.put("vehicle_code", vehicle_code);
|
||||
}
|
||||
|
||||
jsonObject.put("pcsn", pcsn);
|
||||
@@ -102,21 +113,22 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
String area_type = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0).getString("area_type");
|
||||
if (StrUtil.equals(area_type, AreaEnum.YZQY.getCode()) && stewing_time <= 0) {
|
||||
//1.首先更新所有输送线的点位状态
|
||||
JSONArray pointarr = pointTable.query("area_type ='07'").getResultJSONArray(0);
|
||||
PointUpdateUtil.updatePoint(pointarr);
|
||||
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);
|
||||
|
||||
//如果未找到合适的输送带 就去货架
|
||||
if (ObjectUtil.isEmpty(pointObj)) {
|
||||
sendMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject));
|
||||
} else {
|
||||
if (ObjectUtil.isNotEmpty(pointObj)) {
|
||||
jsonObject.put("next_point_code", pointObj.getString("point_code"));
|
||||
jsonObject.put("group_id", group_id);
|
||||
toConveyorTask.createTask((JSONObject) JSON.toJSON(jsonObject));
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
//假如是分拣机械手的下料位置,并且是满托,则去包装线
|
||||
if (StrUtil.equals("1", is_full) && StrUtil.equals(area_type, AreaEnum.FJQY.getCode())) {
|
||||
toPackIngTask.createTask((JSONObject) JSON.toJSON(jsonObject));
|
||||
break;
|
||||
}
|
||||
sendMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject));
|
||||
break;
|
||||
@@ -124,6 +136,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
//叫料出库
|
||||
jsonObject.put("next_point_code", device_code);
|
||||
jsonObject.put("create_mode", "01");
|
||||
jsonObject.put("is_full", is_full);
|
||||
produceInfoByCode = this.getProduceInfoByCode(device_code);
|
||||
//批次 物料,客户要从排产单里面去取
|
||||
jsonObject.put("pcsn", "pcsn");
|
||||
@@ -141,11 +154,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
//叫空托盘
|
||||
jsonObject.put("next_point_code", device_code);
|
||||
produceInfoByCode = this.getProduceInfoByCode(device_code);
|
||||
//假如是压制机下料位置或者是码垛位的上料位,则去看看有没有当前排产单生产的物料的半满托
|
||||
if (StrUtil.equals(device_code, "FJJXSSLW101") ||
|
||||
StrUtil.equals(device_code, "FJJXSSLW102") ||
|
||||
StrUtil.equals(device_code, "FJJXSSLW301") ||
|
||||
StrUtil.equals(device_code, "FJJXSSLW302")
|
||||
//假如是码垛位的上料位,则去看看有没有当前排产单生产的物料的半满托
|
||||
if (StrUtil.equals(device_code, "FJJXSXLW201") ||
|
||||
StrUtil.equals(device_code, "FJJXSXLW202") ||
|
||||
StrUtil.equals(device_code, "FJJXSXLW301") ||
|
||||
StrUtil.equals(device_code, "FJJXSXLW302")
|
||||
) {
|
||||
|
||||
material_id = produceInfoByCode.getString("material_id");
|
||||
@@ -166,6 +179,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
callMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject));
|
||||
break;
|
||||
}
|
||||
//需要更新覆膜机的托盘类型
|
||||
JSONArray pointarr = WQL.getWO("ACSTOMES_001").addParam("area_type", "05").addParam("flag", "4").process().getResultJSONArray(0);
|
||||
// PointUpdateUtil.updatePoint(pointarr);
|
||||
}
|
||||
if (ObjectUtil.isEmpty(produceInfoByCode)) {
|
||||
throw new BadRequestException("未找到点位为'" + device_code + "'对应机械手的生产工单!");
|
||||
@@ -180,19 +196,23 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
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);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
return;
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) {
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.CREATED.value());
|
||||
result.put("message", "失败!");
|
||||
result.put("data", new JSONObject());
|
||||
return result;
|
||||
}
|
||||
//寻找起点
|
||||
//更新所有设备的点位的状态
|
||||
JSONArray pointarr = pointTable.query("area_type='07' and device_point_type ='01' ").getResultJSONArray(0);
|
||||
WmsToAcsServiceImpl wmsToAcsService = new WmsToAcsServiceImpl();
|
||||
JSONArray reurnPointStatusArr = wmsToAcsService.queryPointStatus(pointarr).getJSONArray("data");
|
||||
/* JSONArray reurnPointStatusArr = wmsToAcsService.queryPointStatus(pointarr).getJSONArray("data");
|
||||
for (int i = 0; i < reurnPointStatusArr.size(); i++) {
|
||||
JSONObject reurnPointStatusObj = reurnPointStatusArr.getJSONObject(i);
|
||||
reurnPointStatusObj.put("update_time", DateUtil.now());
|
||||
pointTable.update(reurnPointStatusObj);
|
||||
}
|
||||
}*/
|
||||
//假如没有设置哪个输送线先出,没有按照先进先出
|
||||
JSONObject param = new JSONObject();
|
||||
String rule = WQLObject.getWQLObject("sys_param").query("code='is_outrule'").uniqueResult(0).getString("value");
|
||||
@@ -204,30 +224,40 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
if (ObjectUtil.isEmpty(param)) {
|
||||
throw new BadRequestException("未找到合适的输送线可以出!");
|
||||
}
|
||||
param.put("start_point_code", param.getString("point_code"));
|
||||
jsonObject.put("start_point_code", param.getString("point_code"));
|
||||
rgvTask.createTask((JSONObject) JSON.toJSON(jsonObject));
|
||||
break;
|
||||
}
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "任务状态反馈成功!");
|
||||
result.put("data", new JSONObject());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void manipulatorApply(Map jsonObject) {
|
||||
//组盘
|
||||
JSONObject produceInfoByCode = new JSONObject();
|
||||
public Map<String, Object> manipulatorApply(Map jsonObject) {
|
||||
//如果是码垛机械手下料的地方不需要组盘,等到扫码器扫到的时候再组盘
|
||||
String device_code = (String) jsonObject.get("device_code");
|
||||
if (StrUtil.isEmpty(device_code)) {
|
||||
throw new BadRequestException("设备点位不能为空!");
|
||||
}
|
||||
JSONObject produceInfoByCode = new JSONObject();
|
||||
String vehicle_code = (String) jsonObject.get("vehicle_code");
|
||||
String qty = (String) jsonObject.get("qty");
|
||||
String qty = String.valueOf(jsonObject.get("qty"));
|
||||
//String material_code = (String) jsonObject.get("material_code");
|
||||
produceInfoByCode = this.getProduceInfoByCode(device_code);
|
||||
String material_id = (String) produceInfoByCode.get("material_id");
|
||||
String cust_id = (String) produceInfoByCode.get("cust_id");
|
||||
String producetask_id = (String) produceInfoByCode.get("producetask_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 groubObj = new JSONObject();
|
||||
groubObj.put("group_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
String group_id = IdUtil.getSnowflake(1, 1).nextId() + "";
|
||||
groubObj.put("group_id", group_id);
|
||||
groubObj.put("vehicle_code", vehicle_code);
|
||||
groubObj.put("material_uuid", material_id);
|
||||
groubObj.put("material_id", material_id);
|
||||
groubObj.put("material_code", materialObj.getString("material_code"));
|
||||
groubObj.put("material_name", materialObj.getString("material_name"));
|
||||
groubObj.put("cust_id", cust_id);
|
||||
@@ -294,19 +324,30 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
groubObj.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
groubObj.put("create_name", SecurityUtils.getNickName());
|
||||
groubObj.put("create_time", DateUtil.now());
|
||||
String is_autopackage = "1";
|
||||
if (StrUtil.equals(device_code, "MDJXS601")) {
|
||||
is_autopackage = "0";
|
||||
}
|
||||
groubObj.put("is_autopackage", is_autopackage);
|
||||
WQLObject.getWQLObject("st_buss_vehiclegroup").insert(groubObj);
|
||||
jsonObject.put("type", "1");
|
||||
jsonObject.put("group_id", group_id);
|
||||
this.receiveTaskFromAcs(jsonObject);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "任务状态反馈成功!");
|
||||
result.put("data", new JSONObject());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void group(Map jsonObject) {
|
||||
String task_id = (String) jsonObject.get("task_id");
|
||||
public Map<String, Object> group(Map jsonObject) {
|
||||
String task_code = (String) jsonObject.get("task_code");
|
||||
String vehicle_code = (String) jsonObject.get("vehicle_code");
|
||||
//永远判断生成不生成输送任务
|
||||
String device_code = (String) jsonObject.get("device_code");
|
||||
if (StrUtil.isEmpty(task_id)) {
|
||||
throw new BadRequestException("任务标识不能为空!");
|
||||
if (StrUtil.isEmpty(task_code)) {
|
||||
throw new BadRequestException("任务号不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(vehicle_code)) {
|
||||
throw new BadRequestException("载具号不能为空!");
|
||||
@@ -316,6 +357,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
}
|
||||
//1组盘
|
||||
WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup");
|
||||
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
|
||||
String task_id = taskTable.query("task_code='" + task_code + "'").uniqueResult(0).getString("task_id");
|
||||
JSONObject groupObj = groupTable.query("task_id='" + task_id + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(groupObj)) {
|
||||
throw new BadRequestException("未找到指令为'" + task_id + "'的组盘信息!");
|
||||
@@ -333,28 +376,54 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
iosTable.update(iosObj);
|
||||
}
|
||||
//更新任务的条码
|
||||
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
|
||||
JSONObject taskObj = taskTable.query("task_id ='" + task_id + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) {
|
||||
taskObj.put("vehicle_code", vehicle_code);
|
||||
taskTable.update(taskObj);
|
||||
}
|
||||
//假如是入窑输送线对接口,生成输送任务
|
||||
JSONObject data = new JSONObject();
|
||||
if (StrUtil.equals("RYSSX101", device_code) || StrUtil.equals("RYSSX201", device_code)
|
||||
|| StrUtil.equals("RYSSX301", device_code) || StrUtil.equals("RYSSX401", device_code)) {
|
||||
ConveyorTask conveyorTask = new ConveyorTask();
|
||||
JSONObject taskjo = new JSONObject();
|
||||
taskjo.put("vehicle_code", vehicle_code);
|
||||
taskjo.put("start_point_code", device_code);
|
||||
conveyorTask.createTask(taskjo);
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("start_point_code", device_code);
|
||||
param.put("vehicle_code", vehicle_code);
|
||||
//根据起点去找终点
|
||||
ConveyorTask task = new ConveyorTask();
|
||||
|
||||
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
|
||||
String device_id = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0).getString("device_id");
|
||||
String next_point_code = pointTable.query("device_id ='" + device_id + "' and device_point_type ='02'").uniqueResult(0).getString("point_code");
|
||||
param.put("next_point_code", next_point_code);
|
||||
String conveyorTask_id = task.createTask(param);
|
||||
JSONObject conveyorTaskObj = WQLObject.getWQLObject("sch_base_task").query("task_id='" + conveyorTask_id + "'").uniqueResult(0);
|
||||
|
||||
AcsTaskDto taskDto = new AcsTaskDto();
|
||||
taskDto.setExt_task_uuid(conveyorTaskObj.getString("task_id"));
|
||||
taskDto.setTask_code(conveyorTaskObj.getString("task_code"));
|
||||
taskDto.setRoute_plan_code("normal");
|
||||
taskDto.setStart_device_code(conveyorTaskObj.getString("start_point_code"));
|
||||
taskDto.setNext_device_code(conveyorTaskObj.getString("next_point_code"));
|
||||
taskDto.setVehicle_code(conveyorTaskObj.getString("vehicle_code"));
|
||||
|
||||
data = (JSONObject) JSONObject.parse(JSON.toJSONString(taskDto));
|
||||
}
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "任务状态反馈成功!");
|
||||
result.put("data", data);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> inKiln(Map jsonObject) {
|
||||
String vehicle_code = String.valueOf(jsonObject.get("vehicle_code"));
|
||||
KilnUtil.inKiln(vehicle_code);
|
||||
return new JSONObject();
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "任务状态反馈成功!");
|
||||
result.put("data", new JSONObject());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -371,11 +440,22 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup");
|
||||
JSONObject groupObj = groupTable.query("vehicle_code ='" + vehicle_code + "'").uniqueResult(0);
|
||||
groupTable.query("vehicle_code ='" + vehicle_code + "'").uniqueResult(0);
|
||||
JSONObject returnjo = new JSONObject();
|
||||
returnjo.put("code", groupObj.getString("is_autopackage"));
|
||||
;
|
||||
String is_autopackage = groupObj.getString("is_autopackage");
|
||||
//code的值 1:自动码垛;2:人工码垛;
|
||||
String code = "";
|
||||
if (StrUtil.equals("1", is_autopackage)) {
|
||||
code = "1";
|
||||
} else {
|
||||
code = "2";
|
||||
}
|
||||
//更新窑的信息
|
||||
KilnUtil.outKiln(vehicle_code);
|
||||
return returnjo;
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "任务状态反馈成功!");
|
||||
result.put("code", code);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -439,7 +519,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sureProduceTask(Map jsonObject) {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Map<String, Object> sureProduceTask(Map jsonObject) {
|
||||
String producetask_code = (String) jsonObject.get("producetask_code");
|
||||
String device_code = (String) jsonObject.get("device_code");
|
||||
String material_code = (String) jsonObject.get("material_code");
|
||||
@@ -454,8 +535,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
throw new BadRequestException("未找到工单号为'" + producetask_code + "'的工单信息!");
|
||||
}
|
||||
//1为确认
|
||||
//2为生产中
|
||||
//3为完成
|
||||
//2为完成
|
||||
if (StrUtil.equals(type, "1")) {
|
||||
if (StrUtil.isEmpty(producetask_code)) {
|
||||
throw new BadRequestException("工单号不能为空!");
|
||||
@@ -482,9 +562,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
}
|
||||
if (StrUtil.equals("2", type)) {
|
||||
taskObj.put("producetask_status", "05");
|
||||
taskObj.put("real_qty",qty);
|
||||
taskObj.put("real_qty", qty);
|
||||
}
|
||||
taskTable.update(taskObj);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "任务状态反馈成功!");
|
||||
result.put("data", new JSONObject());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -519,7 +604,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
for (int i = 0; i < array.size(); i++) {
|
||||
JSONObject row = array.getJSONObject(i);
|
||||
String task_id = row.getString("ext_task_uuid");
|
||||
row.put("task_id",task_id);
|
||||
row.put("task_id", task_id);
|
||||
TaskDto taskDto = taskService.findById(task_id);
|
||||
String processing_class = taskDto.getHandle_class();
|
||||
//1:执行中,2:完成 ,3:acs取消
|
||||
|
||||
@@ -42,7 +42,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
|
||||
@Override
|
||||
public JSONObject queryPointStatus(JSONArray arr) {
|
||||
String api = "api/wms/updateDeviceGoods";
|
||||
String api = "api/wms/querydevice";
|
||||
return AcsUtil.notifyAcs(api, arr);
|
||||
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
输入.flag TYPEAS s_string
|
||||
输入.workprocedure_id TYPEAS s_string
|
||||
输入.material_id TYPEAS s_string
|
||||
输入.area_type TYPEAS s_string
|
||||
|
||||
[临时表]
|
||||
--这边列出来的临时表就会在运行期动态创建
|
||||
@@ -75,7 +76,7 @@
|
||||
LEFT JOIN st_buss_vehiclegroup vehiclegroup ON point.vehicle_code = vehiclegroup.vehicle_code
|
||||
WHERE
|
||||
point.area_type = '07'
|
||||
AND point.device_point_type = '01'
|
||||
AND point.device_point_type = '02'
|
||||
and (vehiclegroup.vehicle_code <>'' and vehiclegroup .vehicle_code is not null)
|
||||
ORDER BY
|
||||
vehiclegroup.create_time
|
||||
@@ -103,3 +104,20 @@
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
|
||||
IF 输入.flag = "4"
|
||||
QUERY
|
||||
SELECT
|
||||
|
||||
point.point_code as device_code
|
||||
FROM
|
||||
sch_base_point point
|
||||
WHERE
|
||||
1=1
|
||||
OPTION 输入.area_type <> ""
|
||||
point.area_type = 输入.area_type
|
||||
ENDOPTION
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
@@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.ext.acs.service.impl.AcsToWmsServiceImpl;
|
||||
import org.nl.wms.pda.callEmpty.service.CallEmptyService;
|
||||
import org.nl.wms.pda.exception.PdaRequestException;
|
||||
|
||||
@@ -276,7 +276,7 @@ public class ProducetaskServiceImpl implements ProducetaskService {
|
||||
String producetask_id = param.getString("producetask_id");
|
||||
WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask");
|
||||
JSONObject taskObj= WQL.getWO("PDM_ProduceTask_01").addParam("flag", "3").addParam("producetask_id", producetask_id).process().uniqueResult(0);
|
||||
|
||||
taskObj.put("product_code","wms");
|
||||
WmsToAcsService wmsToAcsService = SpringContextHolder.getBean(WmsToAcsService.class);
|
||||
JSONArray arr = new JSONArray();
|
||||
arr.add(taskObj);
|
||||
|
||||
@@ -189,7 +189,7 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
|
||||
// 压制工序
|
||||
case YZGX:
|
||||
vehicle_type = VehicleTypeEnum.GTP.getCode();
|
||||
start_area = AreaEnum.DDKTTPQ.getCode();
|
||||
start_area = AreaEnum.DKKTTPQ.getCode();
|
||||
break;
|
||||
//分拣工序
|
||||
case FJGX:
|
||||
@@ -212,6 +212,11 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
|
||||
}
|
||||
|
||||
vehicle_code = outStructObj.getString("vehicle_code");
|
||||
//如果是托盘区域/生成一个该类型的托盘
|
||||
if (StrUtil.equals(workInfo.getString("workprocedure_code"), AreaEnum.MTPQ.getCode())) {
|
||||
vehicle_code = CodeUtil.getNewCode("VEHICCLE_CODE_MTP");
|
||||
}
|
||||
|
||||
start_point_code = outStructObj.getString("struct_code");
|
||||
}
|
||||
PointService pointService = SpringContextHolder.getBean(PointService.class);
|
||||
|
||||
@@ -101,7 +101,18 @@ public class CallMaterialTask extends AbstractAcsTask {
|
||||
endpointObj.put("point_status", "02");
|
||||
endpointObj.put("vehicle_code", vehicle_code);
|
||||
pointTab.update(endpointObj);
|
||||
|
||||
//如果起点静置货架,则考虑是不是最后一拖,如果是则考虑改变系统参数
|
||||
String start_area = startPointDto.getArea_type();
|
||||
if (StrUtil.equals(start_area, AreaEnum.RYHCHJ.getCode())) {
|
||||
//查询有没有可以出库的货物 如果没有则需要改变系统参数
|
||||
JSONObject outCacheStruct = StructFindUtil.getOutCacheStruct();
|
||||
if (ObjectUtil.isEmpty(outCacheStruct)) {
|
||||
WQLObject paramTable = WQLObject.getWQLObject("sys_param");
|
||||
JSONObject paramObj = paramTable.query("code='is_canToConveyor'").uniqueResult(0);
|
||||
paramObj.put("value", "1");
|
||||
paramTable.update(paramObj);
|
||||
}
|
||||
}
|
||||
JSONObject startPointObj = pointTab.query("point_code='" + jsonTask.getString("start_point_code") + "'").uniqueResult(0);
|
||||
startPointObj.put("lock_type", "00");
|
||||
startPointObj.put("point_status", "00");
|
||||
|
||||
@@ -16,7 +16,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* 入库任务生成
|
||||
*
|
||||
*/
|
||||
@Service
|
||||
public class ConveyorTask extends AbstractAcsTask {
|
||||
@@ -62,9 +62,10 @@ public class ConveyorTask extends AbstractAcsTask {
|
||||
@Override
|
||||
public String createTask(JSONObject form) {
|
||||
JSONObject taskObj = new JSONObject();
|
||||
//只需要传起点就好,跟载具,终点永远是入窑口
|
||||
//只需要传起点就好,跟载具
|
||||
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");
|
||||
if (StrUtil.isEmpty(vehicle_code)) {
|
||||
throw new BadRequestException("载具不能为空!");
|
||||
}
|
||||
@@ -72,17 +73,13 @@ public class ConveyorTask extends AbstractAcsTask {
|
||||
throw new BadRequestException("起点不能为空!");
|
||||
}
|
||||
taskObj.put("task_id", IdUtil.getSnowflake(1, 1).nextId() + "");
|
||||
String task_status = TaskStatusEnum.START_AND_POINT.getCode();
|
||||
String task_status = TaskStatusEnum.EXECUTING.getCode();
|
||||
taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
taskObj.put("task_type", TaskTypeEnum.IN_TASK.getCode());
|
||||
taskObj.put("task_type", "04");
|
||||
//输送任务
|
||||
taskObj.put("acs_task_type", "2");
|
||||
String start_area = AreaEnum.RYSSXQ.getCode();
|
||||
String next_area = AreaEnum.RYSSXQ.getCode();
|
||||
//根据起点去找终点
|
||||
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
|
||||
String device_id = pointTable.query("point_code ='" + start_point_code + "'").uniqueResult(0).getString("device_id");
|
||||
String next_point_code = pointTable.query("device_id ='" + device_id + "' and device_point_type ='02'").uniqueResult(0).getString("point_code");
|
||||
taskObj.put("task_status", task_status);
|
||||
taskObj.put("start_point_code", start_point_code);
|
||||
taskObj.put("start_area", start_area);
|
||||
|
||||
@@ -76,7 +76,7 @@ public class RgvTask extends AbstractAcsTask {
|
||||
taskObj.put("task_id", IdUtil.getSnowflake(1, 1).nextId() + "");
|
||||
String task_status = TaskStatusEnum.START_AND_POINT.getCode();
|
||||
taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
taskObj.put("task_type", TaskTypeEnum.IN_TASK.getCode());
|
||||
taskObj.put("task_type", TaskTypeEnum.RGV_TASK.getCode());
|
||||
//输送任务
|
||||
taskObj.put("acs_task_type", "2");
|
||||
String start_area = AreaEnum.RYSSXQ.getCode();
|
||||
|
||||
@@ -8,12 +8,14 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.checkerframework.checker.units.qual.A;
|
||||
import org.nl.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.utils.SecurityUtils;
|
||||
import org.nl.utils.SpringContextHolder;
|
||||
import org.nl.wms.BussConstant;
|
||||
import org.nl.wms.WorkProcedureEnum;
|
||||
import org.nl.wms.common.PointUpdateUtil;
|
||||
import org.nl.wms.common.StructFindUtil;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.AreaEnum;
|
||||
@@ -93,19 +95,37 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findNextPoint() {}
|
||||
public void findNextPoint() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public String createTask(JSONObject form) {
|
||||
//送空托盘只会有钢托盘有这个需求, 所以终点永远都是 KTPHCW5 都是从码垛机械手送到空托盘缓存位5
|
||||
//除开送到ktphcw 还有从空托盘缓存位3 送到堆叠区
|
||||
PointService pointService = SpringContextHolder.getBean(PointService.class);
|
||||
//起点,托盘 不能为空,终点可以为空
|
||||
String vehicle_code = form.getString("vehicle_code");
|
||||
String start_point_code = form.getString("start_point_code");
|
||||
String next_point_code = "KTPHCW5";
|
||||
String task_status = TaskStatusEnum.START_AND_POINT.getCode();
|
||||
String next_area = AreaEnum.DKKTTPQ.getCode();
|
||||
//假如起点是KTPHCW3,就需要送到堆叠位
|
||||
if (StrUtil.equals(start_point_code, "KTPHCW3")) {
|
||||
WQLObject point_table = WQLObject.getWQLObject("sch_base_point");
|
||||
JSONArray pointArr = point_table.query("area_type='04'").getResultJSONArray(0);
|
||||
//更新点位
|
||||
PointUpdateUtil.updatePoint(pointArr);
|
||||
//查询有没有空的点位
|
||||
JSONObject pointObj = point_table.query("area_type='04' and point_status='00'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(pointObj)) {
|
||||
throw new BadRequestException("未找到合适的点位");
|
||||
}
|
||||
next_point_code = (String) pointObj.get("point_code");
|
||||
next_area = AreaEnum.DDKTTPQ.getCode();
|
||||
}
|
||||
|
||||
String task_status = TaskStatusEnum.START_AND_POINT.getCode();
|
||||
|
||||
WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
if (StrUtil.isEmpty(start_point_code)) {
|
||||
throw new BadRequestException("起点不能为空!");
|
||||
|
||||
@@ -174,7 +174,7 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String createTask(JSONObject form) {
|
||||
//请求参数 载具、起点 物料,数量,客户,批次,创建方式 是否满托不能为空! 终点可以不为空时,入库单据编号不能为空
|
||||
String start_point_code = form.getString("start_point_code");
|
||||
@@ -187,6 +187,7 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
String cust_id = form.getString("cust_id");
|
||||
String create_mode = form.getString("create_mode");
|
||||
String pcsn = form.getString("pcsn");
|
||||
String vehicle_code = form.getString("vehicle_code");
|
||||
WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
if (StrUtil.isEmpty(start_point_code)) {
|
||||
throw new BadRequestException("起点不能为空!");
|
||||
@@ -214,8 +215,6 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
JSONObject IosObj = iosTable.query("iostorinv_id='" + iostorinv_id + "'").uniqueResult(0);
|
||||
IosObj.put("bill_status", "20");
|
||||
iosTable.update(IosObj);
|
||||
//组盘
|
||||
|
||||
}
|
||||
//如果没给终点,根据起点去找工序,找一个合适的仓位 并且生成入库单,并且锁定点位
|
||||
if (StrUtil.isEmpty(next_point_code)) {
|
||||
@@ -225,9 +224,6 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
if (StrUtil.isEmpty(qty)) {
|
||||
throw new BadRequestException("数量数值不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(cust_id)) {
|
||||
throw new BadRequestException("客户不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(create_mode)) {
|
||||
throw new BadRequestException("创建方式不能为空!");
|
||||
}
|
||||
@@ -238,7 +234,7 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
.process().uniqueResult(0);
|
||||
String workprocedure_id = workInfo.getString("workprocedure_id");
|
||||
WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id);
|
||||
|
||||
//用于判断是不是压制工序,
|
||||
switch (workProcedureEnum) {
|
||||
// 压制工序
|
||||
case YZGX:
|
||||
@@ -302,8 +298,8 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
iosObj.put("create_name", SecurityUtils.getNickName());
|
||||
iosObj.put("create_time", DateUtil.now());
|
||||
iosObj.put("is_full", is_full);
|
||||
iosObj.put("vehicle_code", vehicle_code);
|
||||
WQLObject.getWQLObject("ST_IVT_workProcedureIOS").insert(iosObj);
|
||||
//组盘
|
||||
|
||||
}
|
||||
String task_status = TaskStatusEnum.START_AND_POINT.getCode();
|
||||
@@ -328,25 +324,35 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
taskObj.put("create_name", SecurityUtils.getCurrentUsername());
|
||||
taskObj.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
taskObj.put("create_time", DateUtil.now());
|
||||
taskObj.put("vehicle_code", vehicle_code);
|
||||
taskObj.put("is_delete", "0");
|
||||
taskTable.insert(taskObj);
|
||||
//组盘
|
||||
//如果是压制工序,则需要组盘
|
||||
|
||||
JSONObject jo = new JSONObject();
|
||||
String is_autopackage = "1";
|
||||
if (StrUtil.equals(start_point_code, "MDJXS601")) {
|
||||
is_autopackage = "0";
|
||||
}
|
||||
JSONObject materialObj = WQLObject.getWQLObject("md_me_material").query("material_id='" + material_id + "'").uniqueResult(0);
|
||||
String group_id = IdUtil.getSnowflake(1, 1).nextIdStr();
|
||||
jo.put("group_id", group_id);
|
||||
jo.put("material_id", material_id);
|
||||
jo.put("material_code", materialObj.getString("material_code"));
|
||||
jo.put("material_name", materialObj.getString("material_name"));
|
||||
jo.put("is_autopackage", is_autopackage);
|
||||
jo.put("pcsn", pcsn);
|
||||
jo.put("qty", qty);
|
||||
WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup");
|
||||
groupTable.insert(jo);
|
||||
//如果是压制工序,则需要插入组盘表
|
||||
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"))) {
|
||||
JSONObject materialObj = WQLObject.getWQLObject("md_me_material").query("material_id='" + material_id + "'").uniqueResult(0);
|
||||
String group_id = IdUtil.getSnowflake(1, 1).nextIdStr();
|
||||
jo.put("group_id", group_id);
|
||||
jo.put("material_id", material_id);
|
||||
jo.put("material_code", materialObj.getString("material_code"));
|
||||
jo.put("material_name", materialObj.getString("material_name"));
|
||||
jo.put("is_autopackage", is_autopackage);
|
||||
jo.put("pcsn", pcsn);
|
||||
jo.put("qty", qty);
|
||||
jo.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
jo.put("create_name", SecurityUtils.getCurrentUserId());
|
||||
jo.put("create_time", DateUtil.now());
|
||||
WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup");
|
||||
groupTable.insert(jo);
|
||||
}
|
||||
return task_id;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,255 @@
|
||||
package org.nl.wms.sch.manage.buss;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.utils.SecurityUtils;
|
||||
import org.nl.utils.SpringContextHolder;
|
||||
import org.nl.wms.common.StructFindUtil;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.service.PointService;
|
||||
import org.nl.wms.sch.service.dto.PointDto;
|
||||
import org.nl.wms.sch.service.impl.PointServiceImpl;
|
||||
import org.nl.wms.st.ivt.IvtChangeTypeEnum;
|
||||
import org.nl.wms.st.ivt.StoreIvtServiceImpl;
|
||||
import org.nl.wql.core.bean.WQLObject;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class StructToConveyorTask extends AbstractAcsTask {
|
||||
private final String THIS_CLASS = StructToConveyorTask.class.getName();
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void updateTaskStatus(JSONObject taskObj, String status) {
|
||||
/**
|
||||
*改变任务状态
|
||||
**/
|
||||
String task_id = taskObj.getString("task_id");
|
||||
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
|
||||
JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0);
|
||||
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", SecurityUtils.getCurrentUserId());
|
||||
map.put("update_optname", SecurityUtils.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)) {
|
||||
// 更新任务状态为完成
|
||||
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode"));
|
||||
jsonTask.put("update_time", DateUtil.now());
|
||||
jsonTask.put("remark", "任务执行完成");
|
||||
///审核单据 增加库存 改变出入库表的状态
|
||||
WQLObject mstTab = WQLObject.getWQLObject("ST_IVT_workProcedureIOS");
|
||||
JSONObject mstObj = mstTab.query("task_id='" + task_id + "' and is_delete='0'").uniqueResult(0);
|
||||
//审核 加库存可和用数量
|
||||
StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl();
|
||||
mstObj.put("bill_status", "50");
|
||||
mstObj.put("confirm_optid", SecurityUtils.getCurrentUserId());
|
||||
mstObj.put("confirm_optname", SecurityUtils.getNickName());
|
||||
mstObj.put("confirm_time", DateUtil.now());
|
||||
mstTab.update(mstObj);
|
||||
|
||||
String iostorinv_id = mstObj.getString("iostorinv_id");
|
||||
String next_point_code = mstObj.getString("end_point_code");
|
||||
String start_point_code = mstObj.getString("start_point_code");
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("material_id", mstObj.getString("material_id"));
|
||||
param.put("bill_id", iostorinv_id);
|
||||
param.put("qty_unit_id", mstObj.getString("qty_unit_id"));
|
||||
param.put("pcsn", mstObj.getString("pcsn"));
|
||||
param.put("change_qty", mstObj.getString("qty"));
|
||||
param.put("vehicle_code", mstObj.getString("vehicle_code"));
|
||||
param.put("workprocedure_id", mstObj.getString("workprocedure_id"));
|
||||
param.put("is_full", mstObj.getString("is_full"));
|
||||
param.put("stewing_time", mstObj.getString("stewing_time"));
|
||||
param.put("producetask_id", mstObj.getString("producetask_id"));
|
||||
|
||||
PointServiceImpl pointService = SpringContextHolder.getBean(PointServiceImpl.class);
|
||||
PointDto nextPointDto = pointService.findByCode(next_point_code);
|
||||
if (ObjectUtil.isNull(nextPointDto)) {
|
||||
throw new BadRequestException("未找到可用点位:" + next_point_code);
|
||||
}
|
||||
PointDto startPointDto = pointService.findByCode(start_point_code);
|
||||
if (ObjectUtil.isNull(startPointDto)) {
|
||||
throw new BadRequestException("未找到可用点位:" + start_point_code);
|
||||
}
|
||||
param.put("struct_id", nextPointDto.getPoint_id());
|
||||
ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_CAN_USE);
|
||||
//解锁仓位,
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
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", "");
|
||||
pointTab.update(startPointObj);
|
||||
taskTab.update(jsonTask);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findStartPoint() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findNextPoint() {
|
||||
String task_status = TaskStatusEnum.SURE_START.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);
|
||||
for (int i = 0; i < taskArry.size(); i++) {
|
||||
JSONObject taskObj = taskArry.getJSONObject(i);
|
||||
String task_id = taskObj.getString("task_id");
|
||||
//1 将任务修改为分配 2将终点写入,完成分配,3 加锁点位
|
||||
//找一个合适的仓位
|
||||
WQLObject ProcedureIOStable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS");
|
||||
JSONObject IosObj = ProcedureIOStable.query("task_id='" + task_id + "' and is_delete ='0'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(IosObj)) {
|
||||
throw new BadRequestException("未找到任务号为'" + taskObj.getString("task_code") + "'的入库单据!");
|
||||
}
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("material_id", IosObj.getString("material_id"));
|
||||
param.put("area_type", IosObj.getString("end_area"));
|
||||
param.put("vehicle_code", IosObj.getString("vehicle_code"));
|
||||
JSONObject inStructObj = StructFindUtil.getInStruct(param);
|
||||
if (ObjectUtil.isEmpty(inStructObj)) {
|
||||
throw new BadRequestException("未找到合适的入库仓位!");
|
||||
}
|
||||
//修改单据状态,将终点填入
|
||||
IosObj.put("bill_status", "20");
|
||||
IosObj.put("end_point_code", inStructObj.getString("struct_code"));
|
||||
ProcedureIOStable.update(IosObj);
|
||||
//终点加锁
|
||||
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") + "'");
|
||||
//修改任务状态
|
||||
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
taskObj.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||
taskObj.put("update_optname", SecurityUtils.getNickName());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public String createTask(JSONObject form) {
|
||||
//请求参数 载具、起点 物料,数量,客户,批次,创建方式 是否满托不能为空! 终点可以不为空时,入库单据编号不能为空
|
||||
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");
|
||||
WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
|
||||
if (StrUtil.isEmpty(start_point_code)) {
|
||||
throw new BadRequestException("起点不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(next_point_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);
|
||||
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);
|
||||
/* //组盘
|
||||
JSONObject jo = new JSONObject();
|
||||
String group_id = IdUtil.getSnowflake(1, 1).nextIdStr();
|
||||
jo.put("group_id", group_id);
|
||||
jo.put("material_id", material_id);
|
||||
jo.put("material_code", materialObj.getString("material_code"));
|
||||
jo.put("material_name", materialObj.getString("material_name"));
|
||||
jo.put("vehicle_code", vehicle_code);
|
||||
jo.put("is_autopackage", is_autopackage);
|
||||
jo.put("pcsn", pcsn);
|
||||
jo.put("qty", qty);
|
||||
jo.put("create_id",SecurityUtils.getCurrentUserId());
|
||||
jo.put("create_name",SecurityUtils.getNickName());
|
||||
jo.put("create_time",DateUtil.now());
|
||||
jo.put("task_id",task_id);
|
||||
WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup");
|
||||
groupTable.insert(jo);*/
|
||||
|
||||
PointService pointService = SpringContextHolder.getBean(PointService.class);
|
||||
PointDto startPoint = pointService.findByCode(start_point_code);
|
||||
|
||||
String task_status = TaskStatusEnum.START_AND_POINT.getCode();
|
||||
PointDto nextPoint = pointService.findByCode(next_point_code);
|
||||
JSONObject taskObj = new JSONObject();
|
||||
taskObj.put("task_id", task_id);
|
||||
taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
taskObj.put("task_type", "00");
|
||||
taskObj.put("acs_task_type", "1");
|
||||
taskObj.put("task_status", task_status);
|
||||
taskObj.put("start_point_code", start_point_code);
|
||||
taskObj.put("start_area", startPoint.getArea_type());
|
||||
taskObj.put("request_param", form.toJSONString());
|
||||
taskObj.put("next_point_code", next_point_code);
|
||||
taskObj.put("next_area", nextPoint.getArea_type());
|
||||
taskObj.put("vehicle_code", vehicle_code);
|
||||
taskObj.put("handle_class", THIS_CLASS);
|
||||
taskObj.put("is_auto_issue", "1");
|
||||
taskObj.put("create_name", SecurityUtils.getCurrentUsername());
|
||||
taskObj.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
taskObj.put("create_time", DateUtil.now());
|
||||
taskObj.put("is_delete", "0");
|
||||
taskTable.insert(taskObj);
|
||||
return task_id;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_id) {
|
||||
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) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -67,7 +67,7 @@ public class ToConveyorTask extends AbstractAcsTask {
|
||||
jsonTask.put("update_time", DateUtil.now());
|
||||
jsonTask.put("remark", "任务执行完成");
|
||||
///审核单据 增加库存 改变出入库表的状态
|
||||
WQLObject mstTab = WQLObject.getWQLObject("ST_IVT_workProcedureIOS");
|
||||
/*WQLObject mstTab = WQLObject.getWQLObject("ST_IVT_workProcedureIOS");
|
||||
JSONObject mstObj = mstTab.query("task_id='" + task_id + "' and is_delete='0'").uniqueResult(0);
|
||||
//审核 加库存可和用数量
|
||||
StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl();
|
||||
@@ -116,7 +116,7 @@ public class ToConveyorTask extends AbstractAcsTask {
|
||||
startPointObj.put("lock_type", "00");
|
||||
startPointObj.put("point_status", "00");
|
||||
startPointObj.put("vehicle_code", "");
|
||||
pointTab.update(startPointObj);
|
||||
pointTab.update(startPointObj);*/
|
||||
taskTab.update(jsonTask);
|
||||
}
|
||||
|
||||
@@ -180,36 +180,33 @@ public class ToConveyorTask extends AbstractAcsTask {
|
||||
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("起点不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(next_point_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);
|
||||
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);
|
||||
//组盘
|
||||
JSONObject jo = new JSONObject();
|
||||
String group_id = IdUtil.getSnowflake(1, 1).nextIdStr();
|
||||
jo.put("group_id", group_id);
|
||||
jo.put("material_id", material_id);
|
||||
jo.put("material_code", materialObj.getString("material_code"));
|
||||
jo.put("material_name", materialObj.getString("material_name"));
|
||||
jo.put("vehicle_code", vehicle_code);
|
||||
jo.put("is_autopackage", is_autopackage);
|
||||
jo.put("pcsn", pcsn);
|
||||
jo.put("qty", qty);
|
||||
jo.put("create_id",SecurityUtils.getCurrentUserId());
|
||||
jo.put("create_name",SecurityUtils.getNickName());
|
||||
jo.put("create_time",DateUtil.now());
|
||||
jo.put("task_id",task_id);
|
||||
//更新组盘信息,将task_id 更新
|
||||
WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup");
|
||||
groupTable.insert(jo);
|
||||
JSONObject groupInfo =groupTable.query("gruop_id='"+group_id+"'").uniqueResult(0);
|
||||
groupInfo.put("task_id",task_id);
|
||||
groupTable.update(groupInfo);
|
||||
|
||||
PointService pointService = SpringContextHolder.getBean(PointService.class);
|
||||
PointDto startPoint = pointService.findByCode(start_point_code);
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
package org.nl.wms.sch.manage.buss;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.utils.SecurityUtils;
|
||||
import org.nl.utils.SpringContextHolder;
|
||||
import org.nl.wms.common.StructFindUtil;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.service.PointService;
|
||||
import org.nl.wms.sch.service.dto.PointDto;
|
||||
import org.nl.wql.core.bean.WQLObject;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class ToPackIngTask extends AbstractAcsTask {
|
||||
private final String THIS_CLASS = ToPackIngTask.class.getName();
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void updateTaskStatus(JSONObject taskObj, String status) {
|
||||
/**
|
||||
*改变任务状态
|
||||
**/
|
||||
String task_id = taskObj.getString("task_id");
|
||||
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
|
||||
JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0);
|
||||
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", SecurityUtils.getCurrentUserId());
|
||||
map.put("update_optname", SecurityUtils.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)) {
|
||||
// 更新任务状态为完成
|
||||
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode"));
|
||||
jsonTask.put("update_time", DateUtil.now());
|
||||
jsonTask.put("remark", "任务执行完成");
|
||||
taskTab.update(jsonTask);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findStartPoint() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findNextPoint() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public String createTask(JSONObject form) {
|
||||
//请求参数 载具、起点 物料,数量,客户,批次,创建方式 是否满托不能为空! 终点可以不为空时,入库单据编号不能为空
|
||||
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("起点不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(next_point_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);
|
||||
if (ObjectUtil.isNotEmpty(beforTaskObj)) {
|
||||
throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!");
|
||||
}
|
||||
String task_id = IdUtil.getSnowflake(1, 1).nextId() + "";
|
||||
PointService pointService = SpringContextHolder.getBean(PointService.class);
|
||||
PointDto startPoint = pointService.findByCode(start_point_code);
|
||||
String task_status = TaskStatusEnum.START_AND_POINT.getCode();
|
||||
PointDto nextPoint = pointService.findByCode(next_point_code);
|
||||
JSONObject taskObj = new JSONObject();
|
||||
taskObj.put("task_id", task_id);
|
||||
taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
taskObj.put("task_type", "00");
|
||||
taskObj.put("acs_task_type", "1");
|
||||
taskObj.put("task_status", task_status);
|
||||
taskObj.put("start_point_code", start_point_code);
|
||||
taskObj.put("start_area", startPoint.getArea_type());
|
||||
taskObj.put("request_param", form.toJSONString());
|
||||
taskObj.put("next_point_code", next_point_code);
|
||||
taskObj.put("next_area", nextPoint.getArea_type());
|
||||
taskObj.put("vehicle_code", vehicle_code);
|
||||
taskObj.put("handle_class", THIS_CLASS);
|
||||
taskObj.put("is_auto_issue", "1");
|
||||
taskObj.put("create_name", SecurityUtils.getCurrentUsername());
|
||||
taskObj.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
taskObj.put("create_time", DateUtil.now());
|
||||
taskObj.put("is_delete", "0");
|
||||
taskTable.insert(taskObj);
|
||||
return task_id;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_id) {
|
||||
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) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
|
||||
package org.nl.wms.sch.task;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.wms.WorkProcedureEnum;
|
||||
import org.nl.wms.common.StructFindUtil;
|
||||
import org.nl.wms.sch.manage.buss.CallMaterialTask;
|
||||
import org.nl.wql.WQL;
|
||||
import org.nl.wql.core.bean.WQLObject;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class AutoOutStructTask {
|
||||
private final CallMaterialTask callMaterialTask;
|
||||
|
||||
@SneakyThrows
|
||||
public void run() {
|
||||
this.doExecute();
|
||||
}
|
||||
|
||||
|
||||
private void doExecute() {
|
||||
WQLObject param_Table = WQLObject.getWQLObject("sys_param");
|
||||
int num = param_Table.query("code='stewing_num' ").uniqueResult(0).getInteger("value");
|
||||
int canuse_unm = WQL.getWO("QSTRUCT_RULE.wql").addParam("flag", "10").process().uniqueResult(0).getIntValue("num");
|
||||
//达到可以出库的数量
|
||||
if (canuse_unm >= num) {
|
||||
//1.首先更新所有输送线的点位状态
|
||||
JSONArray pointarr = WQL.getWO("ACSTOMES_001").addParam("area_type", "07").addParam("flag", "4").process().getResultJSONArray(0);
|
||||
// PointUpdateUtil.updatePoint(pointarr);
|
||||
//2.将入库的缓存线规则停用,
|
||||
JSONObject in_rule = param_Table.query("code ='is_inrule'").uniqueResult(0);
|
||||
in_rule.put("value", "0");
|
||||
param_Table.update(in_rule);
|
||||
//2找一个合适的入库缓存
|
||||
JSONObject conveyorObj = StructFindUtil.getConveyor(new JSONObject());
|
||||
if (ObjectUtil.isEmpty(conveyorObj)) {
|
||||
return;
|
||||
}
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("flag", "10");
|
||||
param.put("area_type", "01");
|
||||
param.put("if_full", "1");
|
||||
JSONObject structObj = WQL.getWO("QSTRUCT_RULE").addParamMap(param).process().uniqueResult(0);
|
||||
CallMaterialTask callMaterialTask = new CallMaterialTask();
|
||||
JSONObject taskObj = new JSONObject();
|
||||
taskObj.put("start_point_code", structObj.get("struct_code"));
|
||||
taskObj.put("vehicle_code", structObj.get("vehicle_code"));
|
||||
taskObj.put("material_id", structObj.get("material_id"));
|
||||
taskObj.put("create_mode", "02");
|
||||
taskObj.put("is_full", "1");
|
||||
taskObj.put("workprocedure_id", WorkProcedureEnum.YZGX.getId());
|
||||
callMaterialTask.createTask(taskObj);
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -9,7 +9,8 @@ public enum TaskTypeEnum {
|
||||
DUMP_TASK(2, "25", "转储"),
|
||||
IN_EMPTY_VEHICLE_TASK(3, "30", "入空载具"),
|
||||
OUT_EMPTY_VEHICLE_TASK(4, "40", "出空载具"),
|
||||
OUT_ST_BY_VEHICLE_TASK(5, "50", "按托盘出库");
|
||||
OUT_ST_BY_VEHICLE_TASK(5, "50", "按托盘出库"),
|
||||
RGV_TASK(6, "60", "Rgv任务");
|
||||
|
||||
|
||||
private final int index;
|
||||
|
||||
Binary file not shown.
@@ -64,8 +64,8 @@ spring:
|
||||
#数据库索引
|
||||
|
||||
database: ${REDIS_DB:11}
|
||||
host: ${REDIS_HOST:47.111.78.178}
|
||||
#host: ${REDIS_HOST:localhost}
|
||||
#host: ${REDIS_HOST:47.111.78.178}
|
||||
host: ${REDIS_HOST:localhost}
|
||||
port: ${REDIS_PORT:6379}
|
||||
password: ${REDIS_PWD:}
|
||||
#连接超时时间
|
||||
@@ -162,5 +162,5 @@ jetcache:
|
||||
maxIdle: 200
|
||||
maxTotal: 1000
|
||||
uri:
|
||||
- redis://47.111.78.178:6379
|
||||
- redis://localhost:6379
|
||||
|
||||
|
||||
Reference in New Issue
Block a user